SQL注入结果


SQL injection result

为什么此查询返回id为116:的行

SELECT * 
FROM blahTable
WHERE id =  '116'' OR ''1''=''1'

表中的id是116,但在添加注入代码后,它肯定会返回0行吗?

所以您要问的是,当您运行查询id '116'' OR ''1''=''1'的查询时,为什么返回id为116的行。

原因是类型转换。您的字符串被转换为integer和116,因为您将其作为字符串传递,但与整数进行比较。点击此处阅读更多信息:http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

像116foofoofoo这样的字符串被转换为116进行比较。

不应该应用mysql_real_eescape_string,而应该使用用于数字而不是字符串的方法。

因为CAST('116'' OR ''1''=''1' AS SIGNED)UNSIGNED返回116。