easy_file
登录界面

尝试admin 和密码1

没成功

结果尝试了弱口令 admin 用户和 password 密码就登录成功了

文件上传
新建一个空的 新建木马.txt 文件发现上传成功

然后写入一句话木马
<?php @eval($_POST['a']); ?>
上传失败

说明可能是有字符被过滤了,猜测是php标签,然后给它换成短标签
<?=@eval($_POST['a']);?>

发现上传成功,把文件名改一下吧,方便后面访问

结果抓包改后缀上传发现php后缀被过滤

尝试了各种后缀都上传失败,返回看有没有提示的时候突然反应过来题目名是 file,所以尝试一下任意文件读取
思路就是利用 file 读取上传的 xjmuma.txt 文件,然后文件就被解析咯,就可以get shell 了
那就 file=上传的文件(猜测在当前目录下的 uploads/xjmuma.txt 目录)

发现可以查看 php 配置信息,说明木马文件被解析了
但是这样有一个问题,蚁剑是连不上包含的地址的

所以还是只能用system系统执行命令
system('cat f*');
然后一cat就出flag了

test_your_nc
下载附件后是一个无后缀的 pwn 文件

直接用浏览器打开

一个简单的Python脚本,发现代码直接让输入命令,但是有黑名单进行限制(如果包含这些字符串就直接执行 exit(0)退出)
如果通过黑名单检查就执行 os.system(command)
结合题目用 kali nc 连接一下

然后就是用 l's' 替换 ls
c'at' 替换 cat
$IFS$9 替换空格即可 cat flag

nest_js
又是一个登录界面

也不知道是环境出问题了还是怎么,直接同样用弱口令 admin 用户和 password 密码就登录得到flag了

而且flag是对的

星愿信箱
看题目是SSTI模版注入

先随便注一个{{7*7}}

发现过滤了 {{

抓包后发现是Python模版

![]()
而 {{}} 被过滤了,说明应该是jinja2模版
所以可以直接试着构造payload
{{}}被过滤了就用 {% %} 代替
直接用 Flag 框架中的 url_for 函数生成URL,用于访问。__globals__ 返回该对象的全局变量字典
.os 提供与操作系统交互功能
后面就是popen()函数执行命令了
{% print(url_for.__globals__.os.popen('tac /flag').read()) %}

发现 cat 被过滤了
换为 tac

url_for函数可以替换为 lipsum 函数(是模板中定义的一个变量或函数,我也是看wp得知的,还没找到得到该模版的方法)

tac 命令也可以用 nl 搞定 (表示显示 /flag 的内容,并在每行前加上行号(如题为1行))

easy_signin
进来就403,刚开始我还以为环境坏了

用 dirsearch 扫一下看看

发现两个绿的
分别访问一下
第一个 login.html 是一个登录界面

给了用户名在尝试弱口令 password 时提示的是账号错误

但发现用户名是改不了的
先尝试下一个 login.php

一段看不懂的字符,应该是url编码,解码一下
但是找了个在线网站没解出来

只好扔进随波逐流 貌似发现像原字符串

不知道有啥用,访问api

好像是ssrf漏洞,还记得题目知识点涉及到PHP伪协议

那就用伪协议查看一下源码

发现不全,加两个 /

这么多目录也不知道在哪个下面,但学过web网页开发都知道,一般网页根目录都在 /var/www 或者 /var/www/html 目录下,直接读取

查看源代码

然后有一个 ,,,,,,.php 文件,直接访问居然得到了flag
