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

SQL注入报错注入之floor()报错注入原理分析

简介

对于SQL注入的报错注入通常有三个函数需要我们掌握:

  • extractValue(xml_frag, xpath_expr)
  • updateXML(xml_target, xpath_expr,new_xml)
  • floor()

对于extractValue和updateXML函数来说比较好理解,就不做解释了,这里只对floor函数的报错注入进行讲解。首先我们先要知道floor()报错注入的形式:
floor报错注入是利用:

select count(*),(floor(rand(0)*2)) as x from 表名 group by x

这个相对固定的语句格式,导致的数据库报错。实际利用中通过 concat 函数,连接注入语句与 floor(rand(0)*2)函数,就实现了注入结果与报错信息回显的注入方式。所以我们如果想要理解floor()报错注入的原理,我们首先需要明白:rand(),floor(),group by, count()这几个的意思。

rand()函数

rand() 是一个随机函数:产生0~1的小数
在这里插入图片描述

通过一个固定的随机数的种子0之后,可以形成固定的伪随机序列:
在这里插入图片描述
这样我们加上种子之后,这个数据就出现了可预测性。

floor()函数

那么floor报错注入利用的时候rand(0)*2为什么要乘以 2 呢?这就要配合floor 函数来说了
floor()函数和JavaScript中的Math.floor()函数的作用是一样的,也就是向下取整。
rand(0) => 0~1
rand(0)*2 => 0~2
那么floor(rand(0)*2) => 要么0, 要么1
这个时候我们再来看看之前的查询:
在这里插入图片描述

group by

这个就是分组,相同的数据会分到同一组。
分组的原理很简单,就是会产生一张临时表,插入临时表之前会先判断临时表中是否有对应的key, 如果没有就插入临时表,有就不插入,大概原理就是这样。
在这里插入图片描述
分组后:
在这里插入图片描述

count(*)

统计数量,如果结合group by 就是统计分组的数量。
在这里插入图片描述

报错分析

我们了解了几个函数的作用之后,我们来看看到底是怎么报错的。
先报个错看看:
在这里插入图片描述
从报错信息看这个地方group_key冲突了。
这个group_key为什么会冲突呢?我们分析分析:
从前面floor(rand(0)*2) 得知,当我们执行查询:

select floor(rand(0)*2) from user_rule

的时候会产生固定的序列: 011011011
这个时候再结合group by 会产生一个虚拟表,我们来探讨过程:
1.虚表写入第一条记录,执行floor(rand(0)*2),发现结果为0(此时为第一次计算)

操作keyfloor(rand(0)*2)count(*)
取第一条记录0

2.查询虚拟表,发现0的键值不存在,则插入新的键值的时候floor(rand(0)*2)会被再计算一次,结果为1(此时为第二次计算),插入虚表,第一条记录插入完毕,结果为1。

操作keyfloor(rand(0)*2)count(*)
取第一条记录0
插入记录111

3.虚表写入第二条记录,再次计算floor(rand(0)*2),发现结果为1(此时为第三次计算),此时结算结果为1,所以floor(rand(0)*2)不会被计算,直接count(*)加1,第二条记录写入完毕。查询虚表,发现1的键值存在,所以floor(rand(0)*2)不会被计算第二次,第二条记录查询完毕

操作keyfloor(rand(0)*2)count(*)
取第一条记录0
插入记录111
取第二条记录不用插入112

4.虚表写入第三条记录,再次计算floor(rand(0)*2),发现结果为0(此时为第4次计算),计算结果为0,此时虚表中没有0的数据记录,则执行插入该数据,插入时会再次计算floor(rand(0)*2)(此时为第5次计算),计算结果为1。然而1这个主键已经存在于虚拟表中,而新计算的值也为1(主键键值必须唯一),所以就产生了主键冲突的错误,也就是:Duplicate entry 的报错。

操作keyfloor(rand(0)*2)count(*)
取第一条记录0
插入记录111
取第二条记录不用插入112
取第三条0
插入记录1 冲突1

总结:
在虚表中写入第三条记录是时,产生了报错。此时floor(rand(0)*2)一共被计算了5次,所以数据表中需要最少3条数据才会报错。
另外,要注意加入随机数种子的问题,如果没加入随机数种子或者加入其他的数,那么floor(rand()*2)产生的序列是不可测的,这样可能会出现正常插入无法报错的情况。最重要的是前面几条记录查询后不能让虚表存在0,1键值,如果存在了,那无论多少条记录,也都没办法报错,因为floor(rand()*2)不会再被计算做为虚表的键值,这也就是为什么不加随机数种子有时候会报错,有时候不会报错的原因。

执行报错语句获取数据

爆库

SELECT * FROM user_rule WHERE id = 1 AND (SELECT 1 from 
(SELECT count(*),concat(0x23,(SELECT schema_name from information_schema.schemata LIMIT 0,1),0x23,floor(rand(0)*2)) as x 
from information_schema.`COLUMNS` GROUP BY x) 
as y)

爆表

SELECT * FROM user_rule WHERE id = 1 AND (SELECT 1 from 
(SELECT count(*),concat(0x23,
(SELECT table_name from information_schema.`TABLES` WHERE table_schema = database() LIMIT 0,1),
0x23,floor(rand(0)*2)) as x 
from information_schema.`COLUMNS` GROUP BY x) 
as y)

爆列

SELECT * FROM user_rule WHERE id = 1 AND (SELECT 1 from 
(SELECT count(*),concat(0x23,(SELECT column_name from information_schema.COLUMNS where table_name = 'members' LIMIT 0,1),
0x23,floor(rand(0)*2)) as x 
from information_schema.`COLUMNS` GROUP BY x) 
as y)

相关文章:

SQL注入报错注入之floor()报错注入原理分析

简介 对于SQL注入的报错注入通常有三个函数需要我们掌握: extractValue(xml_frag, xpath_expr)updateXML(xml_target, xpath_expr,new_xml)floor() 对于extractValue和updateXML函数来说比较好理解,就不做解释了,这里只对floor函数的报错注…...

2023CS双非保研985经验分享(南大、华科、中科大科学岛、国防科大、西交、中南、深圳大学、北邮、中科院等)

前言: 2022保研以来,因为自己的双非背景,要与985、211的排名靠前的计科大佬竞争,不自信、焦虑无时无刻的包围着我;所幸,一路以受到了许多学长、学姐耐心的帮助,也有很多保研的同学一路互相支撑。…...

Shell中的IFS

IFS是shell的内置变量,IFS是一个字符串,里面的每一个字符都会用来作为分隔符进行单词分割。 IFS变量只在当前shell起作用。 一、对$*的影响 先做参数替换把$*替换成参数列表。相当于args[] 然后下面分两种情况: (1&#xff09…...

Java学习线路图--书籍推荐

----基础---- 《Java从入门到精通》 ----进阶---- 一 《Java项目开发全程实录》《Java开发实例大全(基础篇)》《Java开发实例大全(提高篇)》 二 《Java Web从入门到精通》《Java Web项目开发全程实录》《Java Web开发实例大…...

【GO】k8s 管理系统项目23[前端部分–工作负载-Pod]

k8s 管理系统项目[前端部分–工作负载-Deployment] 1. 代码部分 1.1 准备工作 由于Pod页面和Deployment内容差不多.那么就直接把Deployment的内容复制过来.再做修改. 替换Deployment为Pod替换Deploy为Pod替换deployment为pod替换deploy为pod禁用新增的按钮,删除新增方法,表…...

rabbitmq在linux系统下安装步骤

第一步:登录官网 官网地址:www.rabbitmq.com,点击Get Started 重要信息:RabbitMQ Tutorials手册,描述了工作模式 第二步:点击Download Installation下载 重要信息:rabbitmq是用erlang语言开发的&#xff0…...

阿里测试员晒薪资条,看完真的扎心了...

前几天,有位老粉私信我,说看到某95后学弟晒出阿里的工资单,他是真酸了…想狠补下技术,努力冲一把大厂。 为了帮到他,也为了大家能在最短的时间内做面试复习,我把软件测试面试系列都汇总在这一篇文章了。 …...

内网渗透辅助工具集Yasso

目录 介绍 工具优势 程序功能模块 目前已有用功能模块 使用例子 工具下载</...

Spring笔记(1):概述

1、什么是Spring&#xff1f; Spring是最受欢迎的企业级Java应用程序开发框架&#xff0c;使用它创建性能好、易于测试、可重用的代码。Spring是一种轻量级的框架。Spring框架的核心特性是开发任何Java应用程序&#xff0c;其目标是使得J2EE开发变得更容易&#xff0c;通过启用…...

工程机械焊接件焊接结构件三维扫描检测外观质量控制-CASAIM三维扫描检测仪

焊接已发展为制造业中的一种重要的加工方法&#xff0c;广泛应用于航空、航天、冶金、石油、汽车制造以及国防等领域。工程机械焊接件品种繁多、几何形状复杂&#xff0c;焊接件质量的好坏将直接影响到产品的使用寿命长短。对焊缝表面尺寸测量及评定表面焊缝缺陷时&#xff0c;…...

使用linux部署项目步骤

文章目录前言一、服务器环境配置二、数据库导入三、项目打包1、修改项目中的访问路径2、修改db.properties的数据库访问路径3、打包4、修改配置&#xff0c;启动服务四、测试总结前言 今天学习了在服务器中部署项目&#xff0c;记录一下 一、服务器环境配置 首先要安装VMware&…...

pt02-list-tuple-dir

容器类型 通用操作 数学运算符 (1) 用于拼接两个容器 (2) 用原容器与右侧容器拼接,并重新绑定变量 (3) * 重复生成容器元素 (4) * 用原容器生成重复元素, 并重新绑定变量 (5) !&#xff1a;依次比较两个容器中元素,一但不同则返回比较结果。< < > > 意…...

高端电器新十年,求解「竞速突围」

竞争激烈的高端电器品牌们&#xff0c;平时王不见王&#xff0c;但也有例外。海尔、博西、海信、创维、方太、老板等等近乎中国电器行业所有一线品牌副总裁级别以上高层&#xff0c;2月22日都现身于上海&#xff0c;来参加一场由红星美凯龙攒起来的高端电器局&#xff0c;2023中…...

[Android Studio] Android Studio使用keytool工具读取Debug 调试版数字证书以及release 发布版数字证书

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f4cb;笔记目…...

2023年金三银四必备软件测试常见面试题1500问!!!【测试思维篇】

五、测试思维5.1 打电话功能怎么去测&#xff1f;我们会从几个方面去测试&#xff1a;界面、功能、兼容性、易用性、安全、性能、异常。1&#xff09;界面我们会测试下是否跟界面原型图一致&#xff0c;考虑浏览器不同显示比例&#xff0c;屏幕分辨率。2&#xff09;功能&#…...

推荐四款自用的电脑神器

作为一个经常鼓捣电脑的小编来说&#xff0c;无论是写文章、截图、办公方面都缺少不了一些好用的软件&#xff0c;今天就给大家盘点一些我推荐用的办公效率工具&#xff0c;让你的效率事半功倍。 写文章神器 以前写文章一直是在公众号编辑上直接写的&#xff0c;缺点就是格式有…...

CSDN 竞赛 32 期

CSDN 竞赛 32 期1、题目名称&#xff1a;传奇霸业2、题目名称&#xff1a;严查枪火3、题目名称&#xff1a;蚂蚁家族4、题目名称&#xff1a;运输石油小结1、题目名称&#xff1a;传奇霸业 传奇霸业&#xff0c;是兄弟就来干。 小春(HP a)遇到了一只黄金哥布林(HP x)。 小春每…...

【路径规划】基于前向动态规划算法在地形上找到最佳路径(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

spring boot maven打包jar包太大,怎么办?这个方法解决你的烦恼

在springboot maven项目中&#xff0c;有两种打包方式&#xff0c;一种是war包&#xff0c;一种是jar&#xff0c;今天我们讲一下jar的打包方式。但是在jar包打包只要我们发现&#xff0c;我们的项目jar太大了&#xff0c;每次上传到服务器的时候非常的慢&#xff0c;接下来我们…...

Spring之AOP理解及使用

文章目录AOP是什么AOPSpring的通知类型1.Before通知2. AfterReturning通知3.AfterThrowing通知4. After通知5. Around通知动态代理JDK动态代理CGLib动态代理动态代理的代码展示AOP使用切面类的配置最后大家好&#xff0c;我是Leo&#xff01;今天给大家带来的是关于Spring AOP的…...

告别手动更新!GAMIT/GLOBK数据处理中tables表文件的自动化管理与避坑指南

告别手动更新&#xff01;GAMIT/GLOBK数据处理中tables表文件的自动化管理与避坑指南 在GNSS数据处理领域&#xff0c;GAMIT/GLOBK作为科研和工程项目的核心工具链&#xff0c;其精度和可靠性高度依赖于各类表文件的及时更新。然而&#xff0c;许多中高级用户在实际操作中常陷…...

BiliRoamingX集成开发:Android 14兼容性优化与高级模块注入技术解析

BiliRoamingX集成开发&#xff1a;Android 14兼容性优化与高级模块注入技术解析 【免费下载链接】BiliRoamingX-integrations BiliRoamingX integrations powered by revanced. 项目地址: https://gitcode.com/gh_mirrors/bi/BiliRoamingX-integrations BiliRoamingX作为…...

从乱码到清晰:一位开发者与iText7中文PDF的三年斗争史

从乱码到清晰&#xff1a;一位开发者与iText7中文PDF的三年斗争史 【免费下载链接】itext7-chinese-font 项目地址: https://gitcode.com/gh_mirrors/it/itext7-chinese-font "为什么我的PDF中文又变成方块了&#xff1f;" 这可能是每个Java开发者在处理中文P…...

OpenClaw镜像体验:无需本地安装快速测试Qwen3.5-4B-Claude

OpenClaw镜像体验&#xff1a;无需本地安装快速测试Qwen3.5-4B-Claude 1. 为什么选择云端镜像方案 上周我在本地尝试部署OpenClaw时&#xff0c;被Node版本冲突和系统权限问题折磨了整整两天。当看到星图平台提供预装好的OpenClawQwen3.5-4B-Claude镜像时&#xff0c;立刻决定…...

手柄优化指南:DS4Windows摇杆调校与硬件适配完全手册

手柄优化指南&#xff1a;DS4Windows摇杆调校与硬件适配完全手册 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 在游戏体验中&#xff0c;手柄摇杆的精准控制直接影响操作手感与游戏表现…...

无代码爬虫方案:OpenClaw调度Qwen3.5-9B解析动态网页数据

无代码爬虫方案&#xff1a;OpenClaw调度Qwen3.5-9B解析动态网页数据 1. 为什么需要无代码爬虫&#xff1f; 作为一个经常需要从网页抓取数据的技术博主&#xff0c;我经历过太多抓取数据的痛苦时刻。传统爬虫开发需要处理反爬机制、解析动态加载内容、维护复杂的XPath或CSS选…...

【PyCon 2024核心议题首发】:CPython 3.13 asyncio重构内幕——原生任务取消语义、零拷贝Socket API与异步GC优化前瞻

第一章&#xff1a;PyCon 2024与CPython 3.13异步演进全景图PyCon 2024于五月在匹兹堡圆满落幕&#xff0c;其核心议题之一正是CPython 3.13的异步能力跃迁。作为首个将async/await语义深度融入解释器底层的Python版本&#xff0c;3.13引入了原生协程调度优化、零拷贝内存视图支…...

OpenClaw智能邮件助手:nanobot镜像自动分类与回复重要邮件

OpenClaw智能邮件助手&#xff1a;nanobot镜像自动分类与回复重要邮件 1. 为什么需要智能邮件助手 每天早晨打开邮箱&#xff0c;看到堆积如山的未读邮件总是让人头疼。重要客户的询盘可能被埋没在促销广告中&#xff0c;紧急的协作请求可能因为延迟回复而影响项目进度。作为…...

OpenClaw自动化周报:Qwen3-32B镜像整合多平台数据

OpenClaw自动化周报&#xff1a;Qwen3-32B镜像整合多平台数据 1. 为什么需要自动化周报 每周五下午&#xff0c;我的日历总会准时弹出提醒&#xff1a;"撰写本周工作总结"。这个看似简单的任务&#xff0c;实际操作起来却异常繁琐&#xff1a;需要登录JIRA查看任务…...

Systemd配置文件修改后不生效?试试这个命令比重启更高效

Systemd配置热更新实战&#xff1a;如何用daemon-reexec替代服务重启 在Linux系统管理中&#xff0c;systemd作为现代init系统的代表&#xff0c;其配置调整是管理员日常工作的核心部分。但许多工程师在修改/etc/systemd/system.conf这类全局配置后&#xff0c;往往陷入两难&am…...