我跟我有以下问题
select
count(*),
concat((select database()), floor(rand() * 2)) as x
from users
group by x;
当我一遍又一遍地在MYSQL客户端中运行此查询时,我得到了2个不同的响应。有时候,我最终会遇到这个错误(我希望根据我正在阅读的博客)
ERROR 1062 (23000): Duplicate entry 'mobile10' for key 'group_key'
在其他时候,我得到的结果如下:
+----------+------------------+
| count(*) | x |
+----------+------------------+
| 6444 | mobile_app_dev10 |
| 6505 | mobile_app_dev11 |
+----------+------------------+
答案 0 :(得分:0)
在Double Query注入中,信息只能通过错误转储。当你使用 floor(rand()* 2)函数和 group by 子句时,它不会每次都出错,但是当group_key出现任何重复条目时。在这里,你强制发生错误,虽然你随机化了内部查询,但你再次使用 floor()来产生重复的条目,因为它产生了最接近的最大整数值。好。而不是 rand()* 2 使用 rand()* 4 执行查询但在多次成功尝试显示第二个结果后发生相同的错误。随机数据的整数值现在增加,现在发生错误的机会相对减少。您可以阅读有关Double Query here的更多信息。