sqli-labs Less-32、33、34、35、36、37(sqli-labs闯关指南 32、33、34、35、36、37)—宽字节注入

目录

Less-32

Less-33

Less-34

Less-35

 Less-36

Less-37


宽字节注入简介

        Less-32,33,34,35,36,37 六关全部是针对’和\的过滤,所以我们放在一起来进行讨论。
        对宽字节注入的同学应该对这几关的 bypass 方式应该比较了解。我们在此介绍一下宽字节注入的原理和基本用法。
        原理: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的一种方法。

        具体分析一下原理:

        1、正常情况下GPC开启或者使用addslashes函数过滤GET或POST提交的参数时,我们测试输入的',就会被转义为\';
        2、若存在宽字节注入,输入%df%27时,经过单引号的转义变成了%df%5c%27,之后再数据库查询语句进行GBK多字节编码,即一个中文占用两个字节,一个英文同样占用两个字节且在汉字编码范围内两个编码为一个汉字。然后MySQL服务器会对查询语句进行GBK编码即%df%5c转换成汉字"運",单引号逃逸出来,从而绕过转义造成注入漏洞。

        宽字节注入原理可以参考:宽字节注入原理 - My_Dreams - 博客园

5. 宽字符注入详解与实战 - bmjoker - 博客园

Less-32

GET-绕过自定义筛选器,将斜杠添加到危险字符。即基于错误_GET_单引号_字符型_转义引号反斜杠_宽字节注入。

 源码:

        源码中对输入的id进行了过滤,过滤 ' 、\ 的函数,将 ' 转为 \' , 将 \ 转为 \\ ,将 " 转为 \"。

        直接进行漏洞利用时会有问题:

 提示将“ ' ”转化为了“ \' ”。

解题思路:
        需要在构造一个反斜杠来转义后一个反斜杠达到过滤的效果。
        ?id=-1%df' union select 1,2,3 --+

        若存在宽字节注入,输入%df%27时,经过单引号的转义变成了%df%5c%27,之后再数据库查询语句进行GBK多字节编码,即一个中文占用两个字节,一个英文同样占用两个字节且在汉字编码范围内两个编码为一个汉字。然后MySQL服务器会对查询语句进行GBK编码即%df%5c转换成汉字"運",单引号逃逸出来,从而绕过转义造成注入漏洞。

爆数据库名:

?id=-1%df' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+ 

 其他的都和Less-1一样,只是在“ ' ”前面加上了%df将%5c 吃掉

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值