#ql在sql中意味着什么?

时间:2010-11-29 03:40:50

标签: sql mysql

有没有人知道OR 1#之类的内容在mysql注入的上下文中意味着什么?

2 个答案:

答案 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)

这是评论的开始。这意味着解析器将跳过之后的任何内容。