生成phar文件
字数 111 2022-08-26 23:56:10
注意:要将php.ini中的phar.readonly选项设置为Off,否则无法生成phar文件。
<?php
class TestObject {
}
@unlink("phar.phar");
$phar = new Phar("phar.phar"); //后缀名必须为phar
$phar->startBuffering();
$phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
$o = new TestObject();
$phar->setMetadata($o); //将自定义的meta-data存入manifest
$phar->addFromString("test.txt", "test"); //添加要压缩的文件
//签名自动计算
$phar->stopBuffering();
?>
生成的文件格式
我们可以看到Metadata被序列化存储了。当我们用一些php函数尝试对该phar文件进行读写操作时,便会对Metadata数据进行反序列化,如果找到了合适的魔术方法,便可以触发反序列化漏洞。