BUU刷题日记-easy-tornado
导语
想要成为web手
easy-tornado
看到题目,想到tornado框架
Tornado是一种 Web 服务器软件的开源版本。Tornado 和主流Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
打开题目,先看hint
/hints.txt |
看到url是
得知请求的时候应该需要带上filehash这个数据,并且filehash是对(cookie_secret+md5(filename))进行md5得到的,因此我们需要得知cookie_secret的内容,没有提示cookie_secret的信息,因此无法通过暴破手段来获取cookie_secret,思路走到了死胡同,看看别的
打开flag.txt
/flag.txt |
可以知道flag在/fllllllllllllag里,尝试访问一下
带上filehash字段的话(显然filehash不对)
看到这个msg=Error并且下面显示的也是Error,猜测是有模板注入
吧Error换一下
发现确实,所以必有模板注入
同时welcome.txt
/welcome.txt |
render也是一个提示,render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页 ,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过 {{}}
进行传递变量和执行简单的表达式。
在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量
就获取到了cookie_secret
那么我们就尝试获取fllllllllllllag所对应的filehash
import hashlib |
得到flag
参考: