前言: 宽字节注入是为了绕过 php中的转义函数诞生的。实例靶场为sqli-labs 中的32关。

原理:

有时候为了防止用户的输入内容带有恶意指令,就对用户输入能容进行处理。addslashes() 函数对单双引号、反斜线及NULL加上反斜线转义,可以有效防止sql注入。但mysql 的编码为GBK, 会认为两个字节为一个汉字 我们只需要用字节把 \ 进行处理成一个汉字,再进行闭合就可以进行注入。而%df 和 / (%5c) 会变为汉字運

演示

当我们输入 1' 是可以发现 ' 被转义成了 1\' 这样就无法闭合前面的单引号

我们使用 %df 让他变为一个汉字 进行列的查询 可以发现数据有3列 当第4列是进行了报错

接着可以使用 联合注入或者报错注入进行 表 和字段的查询