[电信互联网行业竞赛]bestphp
打开靶机,可以看到

flag放在根目录下的flag.php里,需要通过命令执行得到flag,利用php代码中的eval()函数
首先看正则过滤,基本上都过滤完了,但还留有a |?|>|:|/这几个字符
echo命令用'|"包裹了,需要对其进行闭合之后再RCE
可以通过三目运算符判断的方法来执行我们想执行的命令
a?a:b
当a运算结果为true时,会输出a,否则就会输出b,因为有字符限制,可以简写为
a?:b
在liunx中,反引号` 包裹的语句直接运行,? *为匹配符,?可匹配一个字符,*可匹配多个字符
构造payload,加上?>来闭合php文件
?a='?:`/???/?a?%20??a?????`?>
得到flag
0