关于注释

-- 表示 SQL 标准注释,用于注释单行(注意最后有一空格)。

当网站存在尾部空格过滤的功能时,将会无法正确进行 SQL 注入
例如:

1
SELECT * FROM users WHERE username='a' or true --' AND password='1'

此处注入语句尾部空格被去掉,无法正常注入。
可用 MySQL 的单行注释符 # 来代替,不需要额外添加空格,更加简单有效。
也可在 -- 后加上使尾部空格不会被过滤的其他字符,如 -- a ,有用但不推荐。

# 表示 MySQL 单行注释符,功能与 -- 相同。

未编码的 # 在URL中被称为片段标识符( Fragment Identifier ),方便浏览器将页面滚动到对应内容的位置。浏览器不会将 # 后的内容发送到服务器,所以,如果要在导航栏中进行 SQL 注入并使用 # ,需要编码为 %23