有谁知道OR 1#在mysql注入的上下文中是什么意思?
OR 1#
它是MySQL的行注释定界符版本。在标准SQL中,行注释定界符为--。
--
-- This is a standard SQL comment. # This is a MySQL comment.
因此,在SQL注入的情况下,如果攻击者知道您正在使用MySQL,他可能会使用它突然终止恶意SQL语句,从而导致MySQL忽略后面的内容#并仅执行它之前的内容。但是,这仅对单行SQL语句有效。这是一个例子:
#
输入:
用户名:fake' OR 1# 密码:pass
fake' OR 1#
pass
结果SQL:
SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass'
这样执行,返回 每一行 :
SELECT * FROM users WHERE username = 'fake' OR 1