2013-04-12 210 views
1

我在寫我自己的目錄剋星在Python,和我在一個安全的和安全的環境中測試這對我的Web服務器。該腳本基本上試圖從給定網站檢索通用目錄,並查看響應的HTTP狀態代碼,從而能夠確定頁面是否可訪問。
作爲一個開始,該腳本讀取要查找包含所有有趣的目錄中的文件,然後請求提出,以下列方式:蟒蛇HTTP狀態代碼

for dir in fileinput.input('utils/Directories_Common.wordlist'): 

    try: 
     conn = httplib.HTTPConnection(url) 
     conn.request("GET", "/"+str(dir)) 
     toturl = 'http://'+url+'/'+str(dir)[:-1] 
     print ' Trying to get: '+toturl 
     r1 = conn.getresponse() 
     response = r1.read() 
     print ' ',r1.status, r1.reason 
     conn.close() 

然後,響應被解析,如果狀態碼等於「200」被返回,那麼該頁面是可訪問的。我實現了這一切通過以下方式:

if(r1.status == 200): 
    print '\n[!] Got it! The subdirectory '+str(dir)+' could be interesting..\n\n\n' 

一切似乎沒什麼問題,只是劇本標誌着實際上並不如訪問的網頁。實際上,該算法收集返回「200 OK」的唯一頁面,但是當我手動瀏覽以檢查這些頁面時,我發現它們已被永久移動或者它們具有受限制的訪問權限。出事了,但我看不出我應該修復代碼完全相同,任何幫助表示讚賞..

回答

2

我沒有發現你的代碼的任何問題,但它幾乎是不可讀。我已經改寫成這方面的工作片段:

import httplib 

host = 'www.google.com' 
directories = ['aosicdjqwe0cd9qwe0d9q2we', 'reader', 'news'] 

for directory in directories: 
    conn = httplib.HTTPConnection(host) 
    conn.request('HEAD', '/' + directory) 

    url = 'http://{0}/{1}'.format(host, directory) 
    print ' Trying: {0}'.format(url) 

    response = conn.getresponse() 
    print ' Got: ', response.status, response.reason 

    conn.close() 

    if response.status == 200: 
     print ("[!] The subdirectory '{0}' " 
       "could be interesting.").format(directory) 

輸出:

$ python snippet.py 
    Trying: http://www.google.com/aosicdjqwe0cd9qwe0d9q2we 
    Got: 404 Not Found 
    Trying: http://www.google.com/reader 
    Got: 302 Moved Temporarily 
    Trying: http://www.google.com/news 
    Got: 200 OK 
[!] The subdirectory 'news' could be interesting. 

而且,我沒有使用HEAD HTTP請求而不是GET,因爲它是更有效的,如果您不需要的內容,你只對狀態碼感興趣。

+0

非常感謝,我會讓它更具可讀性,然後,我會盡力解決這個問題看你實現。 – user1405417

+0

我試圖用你剛剛給我看的例子,當我向Google提出請求時,我總是得到:使用你的代碼時發生了400個錯誤的請求我得到你在這篇文章中寫的狀態代碼..不知道什麼是錯的。 .maybe我錯過了什麼地方..如果你想看看代碼的核心部分是在這裏:[鏈接](http://pastebin.com/VaAb18uX) – user1405417

+0

我把你的腳本,並開始玩有了它,我改變了檢索目錄的方式,並且使用了:「for fileinput.input('utils/Directories_Common.wordlist')中的目錄:」因爲我已經列出了該文件中的所有目錄..這個修改我總是得到一個400個錯誤的請求... – user1405417