首页 > 其他 > 详细

easy tornado

时间:2020-04-01 00:08:03      阅读:123      评论:0      收藏:0      [点我收藏+]

easy tornado

题目分析

这是一道2018年护网杯的题目

/flag.txt
/welcome.txt
/hints.txt

一共有3个文件。

/flag.txt
flag in /fllllllllllllag
/welcome.txt
render
/hints.txt
md5(cookie_secret+md5(filename))

进入第一个文件flag.txt,发现好像提示文件名为/fllllllllllag

进入第二个文件welcome.txt,发现提示为render,render({options}) 去向模板中渲染数据, 可以把视图响应给客户端,猜测存在模板注入。

进入第三个文件hints.txt,发现提示md5(cookie_secret + md5(filename)),即先将filenamemd5加密,再将cookie_secret与md5加密后的filename进行md5加密,目前我们需要知道的是filenamecookie_secret,猜测文件名为/fllllllllllag,也就是说,只要知道cookie_secret就行了。

观察查看文件时使用的url:

http://111.198.29.45:56630/file?filename=/hints.txt&filehash=b10fbfd1f38e8dd058abe90e0df3db8d

猜测md5(cookie_secret + md5(filename))的结果就是访问文件时所需要的filehash

尝试访问/fllllllllllag,发现跳转到错误页面

技术分享图片

页面中存在msg,尝试:

技术分享图片

证实存在模板注入漏洞

解题过程

查阅资料,发现 secure cookie 是Tornado 用于保护cookies安全的一种措施。

技术分享图片

cookie_secret保存在settings

技术分享图片

发现self.application.settings有一个别名

技术分享图片

handler指向的处理当前这个页面的RequestHandler对象, RequestHandler.settings指向self.application.settings, 因此handler.settings指向RequestHandler.application.settings


可以构造payload获取cookie_secret

payload:error?msg={{handler.settings}}

技术分享图片

获得cookie_secret,编写脚本,计算md5(cookie_secret + md5(filename))

import hashlib

filename = ‘/fllllllllllllag‘
cookie_secret ="6fe556f1-9b77-481e-9535-c4e9f803b89d"

def getvalue(string):
    md5 = hashlib.md5()
    md5.update(string.encode(‘utf-8‘))
    return md5.hexdigest()

def merge():
    print(getvalue(cookie_secret + getvalue(filename)))

merge()

得到flag:

技术分享图片

easy tornado

原文:https://www.cnblogs.com/chalan630/p/12609470.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!