1.ezpop
代码审计,很明显就是分析poc链 ``<?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__);
}
最终的恶意代码执行需要靠mix类中get_flag()函数中的eval()函数执行,逆向分析可以得到poc反应链:
fin: __destruct()自动调用
what: __toString()
mix: run()
crow: __invoke()
fin:__call()
mix:get_flag()
向mix:$m1注入恶意查询代码,同时应该绕过#的注释
考虑使用标签闭合绕过
获取了cmd参数的value,使用hackbar进行post传参,得到以下页面
障眼法,看下源码试试,果然找到了flag