题目:

解题思路:

题目就三个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值。

最新文章

  1. 从零到有——我的OA如何成长
  2. JavaScript权威设计--JavaScript语言核心(简要学习笔记一)
  3. iOS之数组的排序(升序、降序及乱序)
  4. kylin cube测试时,报错:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
  5. Windows Office key 持续更新地址
  6. 改变ListCtrl某行的背景色或者字体颜色
  7. DevC++ 工程没有调试信息的解决办法
  8. Kendo UI开发教程(7): Kendo UI 模板概述
  9. express实践(一)
  10. .net core 命令行(仅作记录)
  11. 家庭记账本小程序之框架设计(java web基础版一)
  12. 组件自定义事件(.sync)实例
  13. 算法模板学习专栏之总览(会慢慢陆续更新ing)
  14. Oracle---number数据类型
  15. poi 创建excel数据
  16. Hive 打开调试模式
  17. 订制EditText光标
  18. http 请求报文和响应报文
  19. Django---时间的时区问题
  20. BI产品学习笔记

热门文章

  1. 通过UI库深入了解Vue的插槽的使用技巧
  2. 多线程的libcurl的使用
  3. kubernetes运行应用2之DaemonSet详解
  4. 网络编程-HTTP cookie
  5. JUC之Fork/Join框架
  6. centos,fedora,ubuntu,opensuse感想
  7. vue学习11-监听属性
  8. echarts的通用属性的介绍
  9. golang中字符串、bytes类型切片、16进制字符串之间的转换
  10. gin源码解读2-揭开gin的神秘面纱