[Hello-CTF]RCE-Labs超详细WP-Level 6

源码分析

  • 这里的代码其实与 [Level 5]([[Level 5-RCE-labs-WP]]) 唯一不同的地方就是 preg_match 函数的第一个参数
    • 这里不再是匹配 flag 字段
    • 而是匹配这一堆字符
      • 小写 b 到 z (没有小写 a, 这是个突破口)
      • 大写 A 到 Z
      • _@#%^&*:{}-+<>"|`;[] 这些符号(注意到了吗, 没有什么符号?)
    • 对了还有数字可以使用

解题分析

  • 这次的WAF进行了升级
  • 可以利用的字符只有 数字, 小写a 和 ?, 对了还有两种斜杆
  • ? 可以匹配任何一个单字符
    • 那么就可以通过 /??a? 对应 /flag, 系统正常情况下根目录中符合这个要求是没有的, 所以就可以索引到 flag 这个文件
  • 之前是通过 cat 命令读取文件, 那现在可以使用 ?a? 来使用 cat 命令吗?(自己打开终端试试吧)
  • 显然是不行的, ?作为通配符只在路径中有效
  • 那我们要如何读取文件呢
    • cat虽说是命令, 但是其实也就是个程序
    • 只需要找到其路径, 直接通过路径访问就可以了
    • /bin/cat /flag
      
    • 使用通配符后
      /???/?a? /??a?
      
    • 但是你会发现 /???/?a? 不单指向了 cat, 似乎还指向了其他东西
      • 可以通过在自己的终端中使用如下命令查看/???/?a? 指向了什么
        echo /???/?a?
        
      • 输出结果
        /bin/cat /bin/tar
        
    • 发现/???/?a? 还指向 tar
      • 那怎么办呢
  • 先看看有哪些读取文件的函数(还是引用了官方的WP)
    命令描述
    cat从第一行开始显示内容,并将所有内容输出
    tac从最后一行倒序显示内容,并将所有内容输出
    more根据窗口大小,一页一页地显示文件内容
    less根据窗口大小,显示文件内容,可以使用键盘上的 [Pg Dn] 和 [Pg Up] 翻页
    head用于显示文件的头几行
    tail用于显示文件的尾几行
    nl类似于 cat -n,显示时输出行号
    tailf类似于 tail -f,实时显示文件尾部内容
    sort读取并排序文件内容
    od以二进制的方式读取文件内容
    vi一种编辑器,能查看文件内容
    vim一种编辑器,能查看文件内容
    uniq过滤重复行,能查看文件内容
    file -f显示文件类型信息,若出错会报告具体内容
  • 或许你可以试试能不能通过通配符的方式, 唯一定位到上述几个函数(这里就不试)
  • 因为这里发现数字似乎来可以利用, 似乎命令里代数字的挺少的
  • 于是就想到了 base64 命令, 可以把输入进行 base64编码 后输出
  • 于是就有了如下解法

解题步骤

  • base64 的位置于 /bin/base64, 所以构造如下
    /???/?a??64 
    
  • 衔接 /flag
    /???/?a??64 /??a?
    
  • 最后 Payload 如下
    ?cmd=/???/?a??64 /??a?
    

请添加图片描述

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Haicaji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值