[护网杯 2018]easy_tornado1

[护网杯 2018]easy_tornado1

image-20250225171945337

image-20250225171959676

image-20250225172013304

image-20250225172023965

题目就如上述图片演示,仔细观察题目可知,tornado是python中的一种常见模版,可以通过渲染带代码使内容呈现在网页上

本来我以为welcome.txt中的render,不是什么重要信息,查了一下才发现其实很重要

render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页 ,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式。
Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。

image-20250225172756172

利用这个render我们或许就可以获取cookie_secret的值,因为我实在无法通过浏览器获取当前页面的cookie值

这里还要提到一个重要的知识点

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

根据上面的知识点,以后我们碰到tornado模版注入类的题的时候,我们就可以尝试看看handler.settings来获取线索。

image-20250225174256581

image-20250225174305291

可以看到,我们输入什么页面就会回显什么,这就是render的作用

image-20250225174434460

这样我们就得到cookie_secret了,接下来我们只要解决fliehash就好,

想要得到filehash我们只要将/fllllllllllllag(即fliename)md5加密,然后再和cookie_secret拼接起来后再进行一次md5加密即可

image-20250225175052809

image-20250225175044252

image-20250225175119089

posted @ 2025-03-05 22:33  朱迪Judy  阅读(38)  评论(0)    收藏  举报