[CTF/网络安全] 攻防世界 easytornado 解题详析[护网杯 2018 easy_tornado]

[CTF/网络安全] 攻防世界 easytornado 解题详析

姿势

题目描述:tornado框架

前期准备:先了解一下tornado框架是什么

Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架

简单说一下其框架漏洞的利用:

传入某文件的路径为“/Users/python/tornado-file-read/static/”

经过python中os.path.abspath函数处理

变成了“/Users/python/tornado-file-read/static”

所以:

如果有一个文件是“/Users/python/tornado-file-read/static.db”,

或一个目录是“/Users/python/tornado-file-read/static_private/”,

它们均以“/Users/python/tornado-file-read/static”开头

虽然这些文件并不在static这个目录下,但我们仍然可以读取到它们

综上所述,os.path.abspath函数会造成一个文件读取漏洞,使我们读取到了本不应该被读取的某些文件。

接着我们看题目:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hints.txt内容为:先md5加密filename,再结合cookie_secret进行md5加密

那就先加密filename,得到结果如下:

在这里插入图片描述

如何得到cookie_secret呢?

当我们修改filehash产生error的时候,会看到tornado的msg漏洞,利用方式如下:
/error?msg=命令

在这里插入图片描述

而题目涉及到render

tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{ {}}进行传递变量和执行简单的表达式。

所以我们可以利用 tornado render 结合msg 执行命令

Payload:
/error?msg={ {handler.settings}}

在这里插入图片描述
将得到的cookie_secret同加密的内容一同进行加密

filename加密后的内容如下:

3bf9f6cf685a6dd8defadabfb41a03a1

cookie_secret字段如下:

220bd4fa-8376-49f5-b16d-102c412c4f2c

一同加密

220bd4fa-8376-49f5-b16d-102c412c4f2c3bf9f6cf685a6dd8defadabfb41a03a1

得到

9d9f51561ce3a7548084351bf4cf57e4

加密的结果有什么用呢?

在这里插入图片描述
这里有个filehash,将加密结果赋值给它

/file?filename=/fllllllllllllag&filehash=9d9f51561ce3a7548084351bf4cf57e4

即可得到flag

在这里插入图片描述

总结

以上为[CTF/网络安全] 攻防世界 easytornado 解题详析[护网杯 2018 easy_tornado],考察模板注入。

我是秋说,我们下次见。

猜你喜欢

转载自blog.csdn.net/2301_77485708/article/details/131741096