SQL注入漏洞
防御和绕过
字符替换
为了防御sql注入,将一些关键字如select union等等替换或者匹配拦截。
只过滤空格
在代码中可以代替空白符的有%0a,%0b等url编码,/**/和括号等等
将select替换为空
比如str_replace()这类函数,可以使用嵌套的方式,将其绕过。
大小写匹配
在MYSQL中,关键字是不区分大小写的。
正则匹配
正则匹配关键字“\bselect\b”可以用“/*!10000select*/”的方式进行绕过。
替换了单引号或者双引号,忘记了反斜杠
这种情况的注入重点在于逃逸引号。
编码解码
有些网站为了防止参数的直接显示,会将参数值进行编码,当服务器接收时在对数据进行解码,这样也确实可以防止一部分攻击。
这我主要讲的是‘宽字节注入’,之前我也只是知道有这个‘东西’,并不知道原理或者作用。所以特地补了一下。
原理:mysql 在使用 GBK