SQL注入—基础知识总结
1、注释符
SQL注入的时候经常会用到注释符注释掉SQL语句后边的拼接内容,在字符型参数注入中常见。
1.1、Mysql中注释符有三种
(1) 注释符:- -
– 在mysql中使用时有时会出错。原因是 - - 后面的空格在URL中最后会被忽略,导致- -与后面的语句连接在一起,无法形成有效的mysql语句。在使用时将空格替换成 + ,即- -+
就可以了。在注入时除了- -+外,- -‘也可以完成注入语句。
(2) 注释符:#
#比较少用,很多情况使用会出错。原因是 # 不能被浏览器识别进行URL编码,数据传输过程中不会把它一起带入后端,转换成URL编码%23就可以使用了。
(url中 # 号是用来指导浏览器动作的(例如锚点),对服务器端完全无用,所以HTTP请求中不包括 #)
(3) 注释符: /**/
因为注释符#、-- 都是把后面的语句全部注释掉了,而内联注释则是注释指定部分,需要一前一后闭合,所以在传参那里几乎不做注释语句用,而是用于过滤空格等bypass。
?id=-1'/**/union/**/select/**/1,2,database()--+
过滤空格,用/**/代替空格
(4) 注释符:payload结尾单引号闭合