有谁知道什么样的OR 1#意味着在
mysql注入的上下文?
解决方法
它是
MySQL的版本的行注释分隔符.在标准sql中,行注释分隔符为 – .
-- This is a standard sql comment. # This is a MysqL comment.
所以在sql注入的上下文中,如果攻击者知道你正在使用MysqL,他可能会使用它来突然终止恶意的sql语句,导致MysqL忽略#后面的任何东西,只执行它之前的内容.然而,这只对单行sql语句有效.以下是一个例子:
输入:
Username:
fake' OR 1#
Password:pass
结果sql:
SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass'
这是执行的,它返回每一行:
SELECT * FROM users WHERE username = 'fake' OR 1