有没有人知道OR 1#
之类的内容在mysql注入的上下文中意味着什么?
答案 0 :(得分:35)
这是MySQL评论分隔符的版本。在标准SQL中,行注释分隔符为--
。
-- This is a standard SQL comment.
# This is a MySQL comment.
所以在SQL注入的上下文中,如果攻击者知道你正在使用MySQL,他可能会用它来突然终止恶意SQL语句,导致MySQL忽略#
背后的任何内容并只执行这些东西它来到它之前。但是,这仅对单行SQL语句有效。这是一个例子:
输入:
用户名:
fake' OR 1#
密码:pass
结果SQL:
SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass'
执行此操作,返回每一行:
SELECT * FROM users WHERE username = 'fake' OR 1
答案 1 :(得分:1)
这是评论的开始。这意味着解析器将跳过之后的任何内容。