web第45题
 [BJDCTF2020]Cookie is so stable
 打开靶场
 
 访问flag页面
 
 一个输入框
 访问hint页面,查看源码
 
 提示与cookie有关
 那么在flag页面输入后抓包观察
 
 输入后显示
 
 登陆后抓包显示为
 
 做到这里又遇到新的知识点了,模板注入漏洞
 参考大佬的博客:一篇文章带你理解漏洞之 SSTI 漏洞,讲的非常详细
 漏洞原理:
模板注入检测方式:
 
 Twig
 {{7*‘7’}} 输出49
 Jinja
 {{7*‘7’}}输出7777777
 
 证明存在模板注入漏洞
 
 证明是twig框架的漏洞
 漏洞详解即payload的构造原理:(引用于上述链接)
原理:也就是说通过向registerUndefinedFilterCallback函数中传入exec,此函数将exec赋值给filterCallbacks[],然后调用getFilter函数,并传入参数name(此参数作为我们需要命令执行的传入的语句),然后将filterCallbacks[]的值取出来即exec赋给callback,再使用call_user_func函数进行调用,相当于执行了call_user_func(exec,name的值),也就是说调用了exec函数,并且将name参数的值作为exec函数的参数,造成了命令执行
一般flag存在根目录下,构造payload:
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}











