当前位置: 首页 > news >正文

RCE-Labs超详细WP-Level10(无字母命令执行_二进制整数替换)

温馨提示

  • 这关涉及的知识点较多, 写的很长, 中间留了很多错误引导(本人在实验时遇到的问题, 或许你们也会遇到), 在后文才逐步解释

源码分析

  • 跟前几关一样, 更改了 WAF 的过滤字段
  • 这个关卡, 只有0, 1, '(单引号), $, <, \ , ( , )可以用

解题分析(实验这些命令, 可以先在自己本地的Bash试试)

  • 上一关使用 八进制, 而这一关只有 01, 难道使用二进制?
    • 没错
  • bash 终端中, 支持使用 $((2#binary))来通过二进制表示十进制数
    • 比如
      $((2#10011010)) -> 154
      
  • 虽说知道了 $((2#binary)) 可以把二进制转为十进制, 但是还是把它拆分开来分析一下
    • 首先是 $((...))
      • bash$((...))算术扩展(Arithmetic Expansion) 的语法
      • 比如
        echo $((3 + 5))   # 输出 8
        echo $((10 / 2))  # 输出 5
        
        a=10
        b=5
        echo $((a + b))  # 输出 15
        
    • 2#binary进制表示法(Base Notation), 表示把后面的二进制串, 转化为十进制
      • 同理 # 前面的 2 也可以是 8, 16, 36, 如下
      echo $((8#72))  # 输出 58
      echo $((16#1A))  # 输出 26
      echo $((36#Z))  # 输出 35
      
  • 熟知 $((2#binary)) 的原理, 是否会发现, 这里不是有个 2 吗, 怎么绕过 WAF 呢
    • 其实只要在嵌套一层 $((...)) 就可以
    • 可以只使用 1< 通过左移运算得到 2
      • $((1<<1))
    • 所以 $((2#binary)) 可以写为 $(($((1<<1))#binaryStr))
  • 然后把 $(($((1<<1))#binaryStr)) 套入到八进制转义中, 这里拿 ls 举例
    • 注意的是, 这里的 $((2#binary)) 不是直接转为八进制数, 而是转为十进制的数, 而这个十进制数当做八进制使用, 转换步骤详细如下
      ls 转为八进制 -> \154\163
      使用八进制转义 -> $'\154\163'
      使用二进制替换 154 和 163, 这两个数现在当做十进制
      	154 -> $((2#10011010)) -> $(($((1<<1))#10011010))
      	163 -> $((2#10100011)) -> $(($((1<<1))#10100011))
      于是 $'\154\163' -> $'\$(($((1<<1))#10011010))\$(($((1<<1))#10100011))'
      
  • 但是使用 $'\$(($((1<<1))#10011010))\$(($((1<<1))#10100

相关文章:

  • Trae与Builder模式初体验
  • fastapi +angular​迷宫求解可跨域
  • Brian Kernighan算法
  • 【模拟算法】
  • requests库的request和response对象的属性和方法
  • 【PTA题目解答】7-4 数气球 (20分)
  • 清明祭祖(原创)
  • C++Primer学习(7.1 定义抽象数据类型)
  • 助力字体管理,规避设计卡顿的得力工具
  • 详解SQL数据定义功能
  • C++【类和对象】(结束篇)
  • 游戏引擎学习第160天
  • GHCTF web方向题解
  • Next.js项目MindAI教程 - 第七章:社区功能实现
  • 73.HarmonyOS NEXT PicturePreviewImage组件深度剖析:高级功能扩展与性能优化策略(三)
  • 多条件下的免杀webshell
  • 虚拟化数据恢复—重装系统服务器崩了的数据恢复过程
  • Spring Boot对接twilio发送邮件信息
  • 我的博客素材
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(45)血海轮回阵 - Floyd-Warshall 多源最短路径
  • 王毅会见俄罗斯外长拉夫罗夫
  • 四川省社科联期刊:不建议在读硕士、博士将导师挂名为第一作者
  • 俄外长与美国务卿通电话,讨论俄美关系及乌克兰问题
  • 贸促会答澎湃:5月22日将举办2025年贸易投资促进峰会
  • 马上评|“AI神医宇宙”欺诈,连演员都不请了
  • 酒店保洁员调包住客港币,海南官方通报:成立调查组赴属地调查