当前位置:   article > 正文

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

sql-labbypass

目录

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 --+

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/389561
推荐阅读
相关标签
  

闽ICP备14008679号