前段时间打了个护网杯,题目质量是真的高,肉鸡又菜了一整场,遇到了一个不太会的东西,复现了一波,记录下好吧。
这个鬼东西就是phar://的序列化的漏洞
介绍一下
phar://跟php://filter 、data://那些一样,都是流包装,可以将一组php文件进行打包,可以创建默认执行的stub
stub
就是一个标志,格式xxx<?php xxxxx; __HALT_COMPILER();?>,结尾一定是__HALT_COMPILER();?>,不然phar识别不了phar文件
举个栗子
先看一下phar怎么用
class TestObject{
}
$phar = new Phar("phar.phar");
$phar -> startBuffering();
$phar -> setStub("<?php __HALT_COMPILER();?>");
$o = new TestObject();
$o -> data = 'h4ck3r';
$phar -> setMetadata($o);
$phar -> addFromString("test.txt","test");
$phar -> stopBuffering();
执行以后同级目录下会有一个phar.phar文件,丢去二进制编辑器