【SQL注入笔记】宽字节注入
GB2312/GBK/GB18030/BIG5/shift_JIS等这些都是常说的宽字节,实际为2个字节。
原理:是在面对php代码或配置,对输入的‘(单引号)进行转义的时候,在处理用户输入数据时存在问题,可以绕过转义。
宽字节注入:GBK编码处理编码的过程存在问题,可构造数据消灭\。
方法:在注入点后键入%df,然后按照正常的注入流程开始注入
例:less-32
http://127.0.0.1/sql-labs/less-32/
?id=1%df’ union select 1,(select user()),3 --+
黑盒测试:
在可能的注入点后键入%df,之后进行注入测试.
白盒测试:
1.查看mysql编码是否为GBK;
2.是否使用preg_replace把单引号替换成\’;
3.是否使用addslashes进行转义;
4.是否使用mysql_real_escape_string()进行转义.
避免宽字节注入的方法:
1.使用utf-8,避免宽字节注入;
Ps:不仅在gbk,韩文、日文等等都是宽字节,都有可能存在宽字节注入漏洞。
2.mysql_real_escape_string,mysql_set_charset(‘gbk’,$conn);
3.可以设置参数,character_set_client = binary.