生成phar文件
字数 111 2022-08-26 23:56:10

注意:要将php.ini中的phar.readonly选项设置为Off,否则无法生成phar文件。

<?php
    class TestObject {
    }
@unlink(&quot;phar.phar&quot;);
$phar = new Phar(&quot;phar.phar&quot;); &#x2F;&#x2F;后缀名必须为phar
$phar-&gt;startBuffering();
$phar-&gt;setStub(&quot;&lt;?php __HALT_COMPILER(); ?&gt;&quot;); &#x2F;&#x2F;设置stub
$o = new TestObject();
$phar-&gt;setMetadata($o); &#x2F;&#x2F;将自定义的meta-data存入manifest
$phar-&gt;addFromString(&quot;test.txt&quot;, &quot;test&quot;); &#x2F;&#x2F;添加要压缩的文件
&#x2F;&#x2F;签名自动计算
$phar-&gt;stopBuffering();

?>

生成的文件格式
我们可以看到Metadata被序列化存储了。当我们用一些php函数尝试对该phar文件进行读写操作时,便会对Metadata数据进行反序列化,如果找到了合适的魔术方法,便可以触发反序列化漏洞。

?&gt; 生成的文件格式 我们可以看到Metadata被序列化存储了。当我们用一些php函数尝试对该phar文件进行读写操作时,便会对Metadata数据进行反序列化,如果找到了合适的魔术方法,便可以触发反序列化漏洞。