buuctf easy-tornado(cookie_secret)
进入url可以看到三个超链接
都分别点开看看
并且发现url中传输了两个参数,一个是filename,另一个是filehash,在flag.txt中将filename改为提示的/fllllllllllllag试一试
看来拿到flag的关键就在于解出filehash是什么,根据连接的提示,我们可以猜想filehash=md5(cookie_secret+md5(filename)),filename我们知道就是/fllllllllllllag,但是cookie
_secret我们就不知道了,而且第二个文档提示的render也不清楚有什么用,只能去查一下tornado框架有什么特点了
tornado框架的介绍Tornado Web Server — Tornado 4.3 文档
我们在这个文档里面可以知道cookie_secret并不像我们的cookie一样可以自己修改的(不是自己的cookie),而是包含了时间戳,HMAC签名和编码后的cookie值,所以我们自己修改cookie并不现实。
想到render难道没有用处么(会不会是cookie_secret的突破点),找一下render作用
render意为渲染;self.render("entry.html", entry=entry)该语句意思就是找到entry.html这个模板,用右边这个entry来实例化entry.html模板中的entry参数,从而显示在页面上。
回过头发现flag.txt那个Error的页面有一个参数msg也是等于Error
发现msg这个函数可以左右页面的输出,想到之前有些题目利用一个参数可以出来phpinfo()等,因此现在目标就是怎么利用msg这个参数来找到cookie_secret了
在文档中我们可以看到相关render渲染的作用,我们可以利用{{}}来把表达式传进去以获取我们想要的信息,这样我们猜想msg={{cookie的位置}}来获得我们想要的
因为没有相关框架的基础,不知道cookie的位置,看了一些大佬的wp,再加上查文档验证
cookie_secret在Application对象settings的属性中 ,访问它的话就需要知道它的属性名字
根据wp和文档可知:self.application.settings有一个别名是RequestHandler.settings
其中handler又是指向处理当前这个页面的RequestHandler对象
RequestHandler.settings指向self.application.settings
因此handler.settings指向RequestHandler.application.settings
将handler.setting带入msg即可知道cookie_secret,再来一步步根据md5来计算filehash
不像别人大佬可以自己写md5解密加密脚本,我只能上网搜在线解密
记住两次加密都要是32位小写,因为你进去默认的filehash就是32位小写的,相当于一个提示吧
相继带入即可获得flag
简单的tornado模板学习知道了cookie_secret在哪并且如何利用渲染获得
标签:
相关文章
-
无相关信息