CTF学习笔记——Havefun&easy_tornado

一、[极客大挑战 2019]Havefun

1.题目

CTF学习笔记——Havefun&easy_tornado

2.解题步骤

虽然作为一个php废物,但是看到下面注释里写的明显是要提交一个get变量,而且很明显有一个dog的提示,就尝试输入一下:
CTF学习笔记——Havefun&easy_tornado
成功爆出flag。

3.总结

这是第一次自己不看writeup做出来的web题,泪目。回头看了一些writeup发现这道题在给cat变量赋值的时候会显示出来,如果赋dog会出flag,但是输入其他值并没有回显,不清楚为什么。

二、[护网杯 2018]easy_tornado

1.题目

CTF学习笔记——Havefun&easy_tornado
题目界面是三个文件夹,依次进入后是这样的信息。

2.解题步骤

第三个文件夹很明显的提示cookie中有东西,所以先去找一下
CTF学习笔记——Havefun&easy_tornado
唔…百度了半天怎么看cookie 然后发现什么都没有…还是老老实实的学技术吧~没有头绪,看看writeup
师傅说,这三个文件是三个提示。比如说第一个flag文件,提示的是flag所在的文件名。
CTF学习笔记——Havefun&easy_tornado

从这张图可以看,在访问文件信息的时候,都是文件名&一个文件的哈希值。
CTF学习笔记——Havefun&easy_tornado
而第三个文件中,正好提示了文件哈希的计算方法。
接下来就是如何获取文件的cookie_secret了。题目的名字是tornado
CTF学习笔记——Havefun&easy_tornado
CTF学习笔记——Havefun&easy_tornado
可见是去构造一个方法去访问cookie_secret的内容。师傅们是直接去看的官方文档…遗憾的是小白看了半天也没找到是怎么用handler.settings去访问到cookie_secret的。
CTF学习笔记——Havefun&easy_tornado
翻了好多writeup,这里直接照搬师傅的原话了

在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量。[原题复现]2018护网杯(WEB)easy_tornado(模板注入) - 笑花大王 - 博客园

蒙圈了半天,佩服当年做题的师傅…
好了,现在取得cookie_sercet的方法也拿到了,现在应该去思考如何执行了。通过测试发现如果在文件名称和哈希不对的情况下,会跳出错误的页面:
CTF学习笔记——Havefun&easy_tornado
可以清晰的看到有一个?msg=Error。那要是换一下其他massage呢?
CTF学习笔记——Havefun&easy_tornado
可见msg的功能是打印。那让他打印一下cookie_secret呢
CTF学习笔记——Havefun&easy_tornado
这里有点懵的是要两个大括号…可能跟py的语法有关…?总之是拿到了cookie_secret的值了,然后根究前文的构造方法算一下flllllag的md5。
CTF学习笔记——Havefun&easy_tornado

CTF学习笔记——Havefun&easy_tornado
CTF学习笔记——Havefun&easy_tornado

CTF学习笔记——Havefun&easy_tornado

3.总结
  1. 这算做的第一道模板注入的题吧,感觉翻文档挺痛苦的。查了半天也不清楚是怎么用句柄访问到的,还要靠师傅给翻译一下…
  2. {{}}两个大括号的闭合方式第一次见…个人感觉是先闭合msg的赋值语句,然后是查询语句?查了一下python的大括号专门是括字典数据类型的,应该跟py没有关系…可能是那个tornado的语法吧…
  3. 学会了md5这些加密的处理方法,还算有点收获吧。
4.参考资料