33. 注入篇——宽字节注入

应用场景

在注入时通常会使用单引号、双引号等特殊字符。在应用中,通常为了安全,开发者会开启PHP的magic_quotes_gpc,或者是addslashes、mysql_real_escape_string等函数对客户端传染到的参数没有进行过滤,则注入的单引号或双引号就会被“\”转义,但是,如果服务器端的数据库使用的是GB2312、GBK、GB18030等宽字节的编码是,则依然会造成注入。

宽字节注入原理

GBK————占用两个字节

ASCII————占用一个字节

PHP中编码为GBK,函数执行添加的是ASCII编码,MYSQL默认字符集是GBK等宽字节字符集。

输入%df和函数执行添加的%5c,被合并成%df%5c。由于GBK是两字节,这个%df%5c被MYSQL识别为GBK。导致本应的%df\变成%df%5c,%df%5c在GBK编码中没有对应,所以会被当成无效字符。

%DF:会被PHP当中的addslashes函数转义为“%df”,"\"即URL里的“%5c”,那么也就是说,“%df”会被转义成“%DF%5c%27”倘若网站的字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为“%DF%5c%27”是一个宽字符,就是“

测试实例

注入点:http://103.238.227.13:10083/index.php?id=1%df' order by 2%23

提交%df之后出现错误,由此可见存在宽字节注入。

33. 注入篇——宽字节注入_第1张图片

获取数据库名

http://103.238.227.13:10083/index.php?id=-10%df' union select 1,databases()%23 

之后获取表名、字段名、列值......................

前面已经多次提到这部分内容,所以之后的不再赘述!


你可能感兴趣的:(【信息安全】,———渗透测试基础,【渗透测试基础】,信息安全)