攻防世界easytornado-tornado模板注入

XCTF - easytornado


本题知识点

  • ssti 注入
  • tornado模板注入
  • tornado cookie_secret获取


打开网页,发现三个txt,分别打开
flag.txt中给出提示,flag在fllllllllllllag文件中

welcome.txt中,发现有个render提示,在tornado 中render为渲染作用


hints.txt中又有提示,通过分析为filehash参数的计算方法。

通过上面三个的分析,可以得出,我们需要构建一个url为
http://61.147.171.105:59757/file?filename=/fllllllllllllag&filehash=8118900642aec29fd2e086878b1b1613
此时我们需要计算出filehash的值即可。
计算方法如下:md5(cookie_secret+md5(filename)),此时我们只需要获取cookie_secret即可。
通过题目提示和welcome.txt提示可以发现为tornado模板注入,cookie_secret获取方法如下:

render是一个类似模板的东西,可以使用不同的参数来访问网页
在tornado模板中,存在一些可以访问的快速对象,例如
{{ escape(handler.settings[“cookie”]) }}

这两个{{}}和这个字典对象也许大家就看出来了,没错就是这个handler.settings对象
handler 指向RequestHandler

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

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

大概就是说,这里面就是我们一下环境变量,我们正是从这里获取的cookie_secret
如此,我们首先要找到模板注入的参数,此时我们将


回车后发现页面跳转到一个错误信息返回的界面,我们在此处尝试注入

输入{{1}},返回值为1,此处存在注入。直接输入payload读取cookie_secret即可。

编写脚本获取filehash,

import hashlib
def get_md5(content):
    md5 = hashlib.md5()
    md5.update(content.encode('utf-8'))
    return md5.hexdigest()
filename="/fllllllllllllag"
cookie_secret="3e22a263-3d8e-4562-b868-48945ac1f5b0"
no_md5_filehash=cookie_secret+get_md5(filename)
filehash=get_md5(no_md5_filehash)
print(filehash)

输入payload获取flag
http://61.147.171.105:59757/file?filename=/fllllllllllllag&filehash=21fa07d6595f51191129893c59e427db

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值