--
表示 SQL 标准注释,用于注释单行(注意最后有一空格)。
当网站存在尾部空格过滤的功能时,将会无法正确进行 SQL 注入
例如:
1 | SELECT * FROM users WHERE username='a' or true --' AND password='1' |
此处注入语句尾部空格被去掉,无法正常注入。
可用 MySQL 的单行注释符 #
来代替,不需要额外添加空格,更加简单有效。
也可在 --
后加上使尾部空格不会被过滤的其他字符,如 -- a
,有用但不推荐。
#
表示 MySQL 单行注释符,功能与 --
相同。
未编码的 #
在URL中被称为片段标识符( Fragment Identifier ),方便浏览器将页面滚动到对应内容的位置。浏览器不会将 #
后的内容发送到服务器,所以,如果要在导航栏中进行 SQL 注入并使用 #
,需要编码为 %23
。