mysql - mysql 中由 group by 上的 count(*) 触发的重复键错误

标签 mysql sql sql-injection mysql-error-1064

大家好,我正在阅读一本关于 sql 盲注的 sans 书

书上有提到如果要在mysql中触发错误

使用此查询并将其注入(inject)目标

1 and (select 1 from (select count(*),concat(/*your malicious query here*/,floor(rand(0)*2)x from users group by x) a)

他说(作者)count(*) on a group by "floor(rand(0)*2)" 导致内部表中的重复键并显示 key

我的问题: 首先,他为什么把 x 放在那里?

第二个是什么是内部表错误中的重复键以及除了这个之外是什么查询导致它以及 count(*) 如何在 group by "floor(rand(0)*2 )" 导致它发生

最佳答案

x 是表达式 floor(rand(0)*2) 的别名,所以它可以在 GROUP BY x 中引用.

“内部表中的重复键”听起来像是对在尝试处理此查询时发生的 MySQL 错误的描述。

关于mysql - mysql 中由 group by 上的 count(*) 触发的重复键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48088405/

相关文章:

php - 限制mysql调用cakephp中的相同信息

php - 为列推进区分大小写的 phpNames

MySQL-当其中的变量不存在时获取 SUM

sql - 这个 SQL 注入(inject)是如何工作的?需要解释

MySQL查询速度极慢

sql - 使用没有 FOREIGN KEY 的 REFERENCES 是否仍会创建外键?

mysql - 我应该如何处理 clojure 项目的 sql 模式管理?

PHP magic_quotes_gpc 漏洞

java - 在准备好的语句中,setString()是防止SQL注入(inject)的唯一有用方法吗?

Php foreach 循环仅在检查重复项时在 mysql 中添加第一行