1.本题需要了解到服务端模板注入攻击,SSTI里的Twig攻击。
这里大家要想详细了解可以查看这里的两篇博客
智慧门
安全门
测试为Twig还是jinja2模块的方法:
输入{{7*‘7’}},返回49表示是 Twig 模块
输入{{7*‘7’}},返回7777777表示是 Jinja2 模块
2.尝试输入以后发现本题为Twig模块
3.Twig模块的payload自己记录下来,下次需要直接复制即可
PS: 先要把exec() 作为回调函数传进去就能实现命令执行了
(1)首先要先查看id,用BP抓包放包即可在网页直接查看回显
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}
(2)在源码中我们发现了有flag的提示,接下来将将"cat /flag" 替换"id" 即可在网页回显出flag,这里因为环境不一样,flag也会改变,就不放flag了,相信大家都可以解决
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}
4.本题需要注意,做题的时候要学会把题目每一个页面的源码都查看一遍,我们不难发现在hint页面,提示我们看cookie
这也是为什么本题许多小伙伴做不出来的原因。这题很特别,我们随便转一个username,都会回显你的username,我们一开始以为username就是它的注入点,但是按F12查看cookie时却发现它的注入点叫user。所以我们要特别小心,抓包得到的注入点应该是user。
5.做题时,先按F12查看cookie,再去抓包,显示的就是user