看啥推荐读物
专栏名称: SAINTSEC
SAINTSEC 民间信息安全技术团队,DEFCON GROUP 020发起团队,旗下分SRC、CTF等多个小组,获得众多的CNVD、CNNVD证书和CVE编号,可接APP、WEB、IoT等安全测试、源代码安全审计、渗透测试、安全培训等项目
今天看啥  ›  专栏  ›  SAINTSEC

PHP phar反序列化原理详解

SAINTSEC  · 公众号  ·  · 2024-02-20 10:53
phar的本质是一种压缩文件,会以序列化的形式存储用户自定义的meta-data。Phar文件结构stub:phar文件标识,以 __HALT_COMPILER();?>结尾manifest:压缩文件的属性等信息,以序列化的形式存储自定义的meta-datacontents:压缩文件的内容signature:签名,在文件末尾测试首先将php.ini中的phar.readonly置为Off,否则无法生成phar文件,而且这个参数是无法通过ini_set()进行修改的。生成phar文件    class TestObject {   }    @unlink("phar.phar");    $phar = new Phar("phar.phar"); //后缀名必须为phar    $phar->startBuffering();    $phar->setStub(""); //设置stub    $o = new TestObject();    $o ->data = 'th1e';    $phar->setMetadata($o); //将自定义的meta-data存入manifest    $phar->addFromString("test.txt", "test"); //添加要压缩的文件    //签名自动计算    $phar->stopBuffering();?>打开文件可以看到,以序列化储存的文件构造利用代 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照