前言:
此题主要涉及到tornado (一个web框架)的基本认知,以及用python写MD5加密脚本,还要了解什么是cookie_secret,什么是render函数。
一、新知识
- 什么是tornado?
tornado是python的一个web框架。 - 用python写md5加密脚本
import hashlib //导入模块 def md5(str): //定义一个函数 md5=hashlib.md5() //创建一个对象 md5.update(str.encode('utf8')) //记得将字符串规定一种编码 return md5.hexdigest() cookie_secret = "402ecfe0-64a7-4b07-9af1-bd28d59d227f" print(md5(cookie_secret + md5("/fllllllllllllag")))
- 这里的cookie_secret指的是什么?
简单的来讲就是密钥,用它来进行一系列的安全加密。 - 什么是render函数?
它是一个渲染函数,暂时并无其它更多了解。
二、解题思路
- 打开链接发现3个文件夹,打开/flag.txt发现提示flag in /fllllllllllllag,打开welcome.txt 发现提示 render ,打开hints.txt 发现提示 md5(cookie_secret+md5(filename)) 再看看url中的get传参可以推断出filehash就是md5(cookie_secret+md5(filename))的运算结果。但是我们并不知道cookie_secret的值,怎么办呢?
- 我们尝试直接访问/fllllllllllllag发现自动跳转到了error页面且页面内容可以自己更改,那么我们是否可以改成一个变量,让此变量中含有cookie_secret?
- 经过查阅资料发现,handler.settings变量中,settings是一个字典,主要保存一些配置选项.那么现在就好办了,使用payload为?msg=即可得到cookie_secret的值如:
- 现在可以运行我们上面写的python脚本进行对应的MD5的加密最后得到最终的paylod ?filename= /fllllllllllllag&filehash=db8210d5af8bfcd318427ffc0f1b74ef得到我们的flag: