vlambda博客
学习文章列表

【SQL注入笔记】宽字节注入

GB2312/GBK/GB18030/BIG5/shift_JIS等这些都是常说的宽字节,实际为2个字节。

原理:是在面对php代码或配置,对输入的‘(单引号)进行转义的时候,在处理用户输入数据时存在问题,可以绕过转义。

宽字节注入:GBK编码处理编码的过程存在问题,可构造数据消灭\。

方法:在注入点后键入%df,然后按照正常的注入流程开始注入

例:less-32http://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.