宽字节注入---GBK双字节绕过

本文探讨了宽字节注入的原理,特别是在GBK编码下如何利用%df和%**%5c%5c%27等方式绕过字符串转义。文章详细解释了addslashes()函数在PHP和MySQL中的作用,以及如何通过字符集特性来规避过滤。同时,介绍了字符、字符集的基本概念,如UTF8和宽字节的概念。
摘要由CSDN通过智能技术生成

原理

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串---PHP addslashes()函数

在mysql中,用于转义(即在字符串中的符号前加上”\”)的函数有addslashes,mysql_real_escape_string,mysql_escape_string等,还有一种情况是magic_quote_gpc,不过高版本的PHP将去除这个特性。

mysql 在使用 GBK 编码的时候, 会认为两个字符为一个汉字, 例如%aa%5c 就是一个
汉字(前一个 ascii 码大于 128 才能到汉字的范围) 。 我们在过滤 ’ 的时候, 往往利用的思
路是将 ‘ 转换为 \’ (转换的函数或者思路会在每一关遇到的时候介绍) 。
因此我们在此想办法将 ‘ 前面添加的 \ 除掉, 一般有两种思路:
1、 %df 吃掉 \ 具体的原因是 urlencode(‘\) = %5c%27, 我们在%5c%27 前面添加%df, 形
成%df%5c%27, 而上面提到的 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字, 此
事%df%5c 就是一个汉字, %27 则作为一个单独的符号在外面, 同时也就达到了我们的目的。
2、 将 \’ 中的 \ 过滤掉, 例如可以构造 %**%5c%5c%27 的情况, 后面的%5c 会被前面的%5c
给注释掉。 这也是 bypass 的一种方法。

涉及到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值