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

[Hello-CTF]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

相关文章:

  • LeetCode 环形链表II:为什么双指针第二次会在环的入口相遇?
  • 串的KMP算法详解
  • LeetCode[203]移除链表元素
  • 【GPT入门】第21课 langchain核心组件
  • 基于SSM + JSP 的水果蔬菜商城
  • 【C++】每日一练(轮转数组)
  • SSL/TLS 1.2过程:Client端如何验证服务端证书?
  • CentOS 8 停止维护后通过 rpm 包手动安装 docker
  • MIDI,AI 3D场景生成技术
  • Java中的访问修饰符有哪些
  • word处理控件Aspose.Words教程:使用 Python 删除 Word 中的空白页
  • 机器学习与深度学习中模型训练时常用的四种正则化技术L1,L2,L21,ElasticNet
  • C++语言的动态规划
  • C++基础 [三] - 面向对象三
  • MySQL自动化配置工具开发
  • 电子电气架构 --- 分布到集中的动カ系统及基于域控制器的架构
  • node-ddk,electron 开发组件
  • CSS元素层叠顺序规则
  • 读 Gemma 3 二分
  • 异步加载错误如何解决
  • 师爷、文士、畸人:会稽范啸风及其著述
  • 诠释微末处的丰盈:“上海制造佳品汇”首届海外专场即将亮相日本大阪
  • 观察|本轮印巴冲突或促使印度空军寻求更先进战机
  • 沙青青评《通勤梦魇》︱“人机组合”的通勤之路
  • 中哥两国元首共同见证签署《中华人民共和国政府与哥伦比亚共和国政府关于共同推进丝绸之路经济带和21世纪海上丝绸之路建设的合作规划》
  • 杭勇已任常州市政协党组成员,此前任常州市委常委、秘书长