0

Windows 7 で python 3.3.0 を使用しています。dork.txt と fuzz.py の 2 つのファイルがあります。

dork.txt には以下が含まれます。

/about.php?id=1
/en/company/news/full.php?Id=232
/music.php?title=11

fuzz.py には以下が含まれます。

srcurl = "ANY-WEBSITE"
drkfuz = open("dorks.txt", "r").readlines()
print("\n[+] Number of dork names to be fuzzed:",len(drkfuz))

for dorks in drkfuz:
    dorks = dorks.rstrip("\n")
    srcurl = "http://"+srcurl+dorks

    requrl = urllib.request.Request(srcurl) 

    #httpreq = urllib.request.urlopen(requrl)

    # Starting the request
    try:
        httpreq = urllib.request.urlopen(requrl)
    except urllib.error.HTTPError as  e:
        print ("[!] Error code: ",  e.code)
        print("")
        #sys.exit(1)

    except urllib.error.URLError as  e:
        print ("[!] Reason: ",  e.reason)
        print("")
        #sys.exit(1)  

    #if e.code != 404:
    if httpreq.getcode() == 200:
        print("\n*****srcurl********\n",srcurl)
        return srcurl

そのため、 を含む正しい Web サイト名を入力すると、正常/about.php?id=1に動作します。しかし、 を含む Web サイトを提供すると/en/company/news/full.php?Id=232、最初に印刷Error code: 404されてから、次のエラーが表示されます:UnboundLocalError: local variable 'e' referenced before assignmentまたはUnboundLocalError: local variable 'httpreq' referenced before assignment

ウェブサイトに を含むページがない場合、それは理解できますが/about.php?id=1、テキスト ファイル内の残りのドークをチェックするためError code: 404にループに戻らないのはなぜですか??? forここで停止してエラーをスローするのはなぜですか?

次のようなウェブサイトのアドレスから有効なページを見つけるスクリプトを作成したいと思います。www.xyz.com

4

2 に答える 2

2

urllib.request.urlopen(requrl)式が例外をスローすると、変数httpreqは設定されません。ステートメントNoneの前に設定してから、まだ後であるかどうかをテストできます。tryNone

httpreq = None

try:
    httpreq = urllib.request.urlopen(requrl)

# ...

if httpreq is not None and httpreq.getcode() == 200:
于 2013-02-28T13:17:50.110 に答える
0
srcurl = "ANY-WEBSITE"
drkfuz = open("dorks.txt", "r").readlines()
print("\n[+] Number of dork names to be fuzzed:",len(drkfuz))

for dorks in drkfuz:
    dorks = dorks.rstrip("\n")
    srcurl = "http://"+srcurl+dorks

    try:
        requrl = urllib.request.Request(srcurl)
        if requrl != None and len(requrl) > 0:
            try:
                httpreq = urllib.request.urlopen(requrl)
                if httpreq.getcode() == 200:
                    print("\n*****srcurl********\n",srcurl)
                    return srcurl
            except:
                # Handle exception
                pass
    except:
        # Handle your exception
        print "Exception"

テストされていないコードですが、論理的に機能します。

于 2013-02-28T13:42:51.223 に答える