【BJDCTF-2020-web】Cookie is so subtle!
[TOC]
今天收获比较大的就是这一道模板注入题:cookie is so subtle
我是在ctfhub上寻找关于cookie的题目时发现的,后来发现BUUCTF也有这道题,就复现了一遍。
第一步、审查发现漏洞:
主界面是BJDCTF,界面正常,源码检查一下,看了一下cookie也没大问题:
Flag界面提示输入ID(Username)进行提交,
检查源码,也没发现问题,cookie正常:
尝试输入一波:
发现cookie中多出了一个user变量,且输入与回显一致,user这个地方存在问题。
最后是Hint界面,页面未见提示,但是在源码中发现
Why not take a closer look at cookies?
更加使我确信cookie中user变量存在问题,并且它对应的界面正是flag.php。
第二步、漏洞利用:
首先对flag.php界面进行抓包:
查询一番过后发现是模板注入(SSTI):
验证是否为SSTI:
验证通过!!!
接下来判断是jinja2模板还是死Twig模板:(其实在判断为SSTI下的php页面就已经确定其为Twig)
判断方法:
如果输入NaN如果 输出7777777 则是jinja2模板
如果是 49 则是 twig模板
这里输出了49 则这是 twig模板注入
了:
接下来调用模板payload就可以了:
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}} |
第三步、总结:
SSTI问题是服务器端常常面临的一个问题,它主要面临的威胁就是在未过滤下会直接回显引擎得到的解析,在这一点上有点类似SQL注入。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The DC_comics's World!