[Hello-CTF]RCE-Labs超详细WP-Level 0&1

Level 0

  • 这关 Flag 怎么获取就不多说了, 开头显示的两个就是
  • 接下来对靶场的源码解释一下
    • 前面输出的两句包含 Flag 的先跳过, 后面再说怎么来的
  • <?php 后开始看
    • 首先是 探姬 写的注释, 也是提示, 请务必自己仔细阅读(后面就不对此强调了)
      • 当于是一步步引导如何完成这些关卡
      • 理论上就应该看着些提示, 然后自己去学习相关内容, 就有能力完成题目~~(而不是来看别人写的WP)~~
    • 然后就定义了 $code, $bash 两个变量, 然后就通过 eval() 执行 $code 变量的内容, 然后通过 system 执行 $bash 的内容
    • 先来看 $codeeval() 这两个语句
      • $code 是一个字符串变量
        • 其中包含着两个语句
        • 一个是 include(flag.php);, 将 flag.php 的文件内容包含到本文件内容中, 并执行
          • 但是这里并不能看出 flag.php 内容是什么
          • 大概是定义了 $flag 这个变量
        • 另一个语句就是 echo 'This will get the flag by eval PHP code: '.\$flag;
          • 首先是 echo , 这个语法的作用是把后面的字符输出到前端页面
          • echo 后跟着是 'This will get the flag by eval PHP code: '.\$flag; 字符串
            • 把他们进行拆分一下
              • 'This will get the flag by eval PHP code: '
                • 这个是个常规的字符串
              • .
                • 这个是 PHP 中的字符串连接符, 将字符串与其他变量进行连接
                • 并自动进行转换
              • \$flag
                • 这里的 \$flag 变量进行转义, 使 $flag 变量在这里是 $flag
                • 而非这个变量的值
      • 接着 $code 变量会被传递给 eval() 执行
        • eval() 会执行如下两个指令

          include('flag.php');
          echo 'This will get the flag by eval PHP code: '.$flag;
          
        • 这里注意的是, 虽然 $code 变量中 \$flag 被转义了, 成为了 $flag
          • 但是在 eval() 中, $flag 就是 $flag, 咩有被转义, 所以 echo 输出的是 $flag 的值
    • 接着来看 $bashsystem() 这两个语句
      • eval() 不同的是 system() 执行的是系统命令行的 Bash 指令, 而非 PHP 语句
      • 所以 $bash 变量中, 先用 echo 输出提示, 然后再使用 cat /flag 获取根目录下flag文件中的内容
        • 或许这里会有疑问
          • echo 不是 PHP 的语法吗, system 执行的不是 Bash 命令吗, 为什么这里可以用
            • 其实只是刚好同名罢了, echo 在 PHP 和 Bash 中都存在
    • 最后在通过 highlight_file(__FILE__);
      • 使 index.php 的代码高光显示, 并自然而然地衔接在上文输出之后
  • 或许看完这么多, 会对后续的 PHP 代码理解有所帮助吧

Leve 1

  • 这关的代码很简单, 每关都有的 include ("get_flag.php");highlight_file(__FILE__); 就不再介绍
  • 接下来就是 eval($_POST['a']);, 而这一代码就是典型的一句话木马
    • 即将 POST 请求的 a 的值传入给 eval() 执行
  • 解题步骤
    • 打开 BurpSuite 抓到靶场网页的请求
    • 对着报文 -> 右键 -> 修改请求方法(改为 POST 请求)
      • 然后再末尾添加参数(eval执行的命令就是参考第一关的)

        a=echo $flag;
        
    • 发送请求即可获得 flag
      -在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Haicaji

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

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

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

打赏作者

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

抵扣说明:

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

余额充值