记一次 easy_tornado 之旅

  1. 先了解下题目里 tornado 看看情况
    在这里插入图片描述
    大概心里有个方向了

  2. 话不多说,先上图
    在这里插入图片描述

  3. 根据题目可知有三个文件,不管三七二十一,先挨个点一遍,看看效果
    在这里插入图片描述
    flag.txt:文件里给出了,flag的位置??这么简单?尝试一波能否访问:
    在这里插入图片描述
    错误信息,不能访问,发现访问需要 filehash,文件名知道,filehash 不知道啊,接着往下看看吧
    在这里插入图片描述
    这里只给了一个单词,先不管吧,小编最初只是了解下单词什么意思,嗯不够纯粹,深入了解一下,才发现这是 python 的一个渲染函数。那么应该考虑是 python 模板注入了
    在这里插入图片描述
    这里就更带劲了,直接给出了获取 filehash 的方法,前提是得知道 cookie_secret

  4. 前面我们知道 tornado render,那么先去了解下这是个什么东西
    Tornado小记 – 模板中的Handler
    然后牵连出 STTI,参考:SSTI完全学习

概要:
SSTI就是服务器端模板注入(Server-Side Template Injection),也给出了一个注入的概念。
SSTI也是获取了一个输入,然后再后端的渲染处理上进行了语句的拼接,然后执行。SSTI利用的是现在的网站模板引擎,主要针对python、php、java的一些网站处理框架,比如Python的jinja2、mako、tornado、django,php的smarty、twig,java的jade、velocity。当这些框架对运用渲染函数生成html的时候会出现SSTI的问题。

了解完之后,发现在tornado模板中,存在一些可以访问的快速对象,例如:

<title>
     {{ escape(handler.settings["cookie"]) }}
 </title>
  • handler.settings指向RequestHandler.settings,而RequestHandler.settings又指向self.application.settings 。所有handler.settings就指向RequestHandler.application.settings了。而这里面正是我们的环境变量
  • 为什么使用 {{}}
    Tornado templates support control statements and expressions. Control statements are surrounded by {% and %}, e.g. {% if len(items) > 2 %}. Expressions are surrounded by {{ and }}, e.g. {{ items[0] }}.

根据以上信息,构造如下 payload:
在这里插入图片描述
在这里插入图片描述
5. 尝试用环境变量:handler.settings
在这里插入图片描述
得到了 cookie_secret,根据之前得到的 filehash 的加密方式:md5(cookie_secret+md5(filename))
在这里插入图片描述
在这里插入图片描述
或者使用脚本:

import hashlib

def Md5(x):
	md5 = hashlib.md5(str(x).encode("utf8")).hexdigest()
	return md5
	
print(Md5("998295d7-756f-4b8a-ab70-ecadb46d9033"+Md5("/fllllllllllllag")))
  1. 获取加密后的 filehash,进行注入,payload如下;
filename=/fllllllllllllag&filehash=2aaa47cd21fcbb4c37344c705ad3f0ba

在这里插入图片描述
7. 总结
STTI 注入初次接触,不是熟悉,不了解 handler.settings 这个东西,基本废了,web 方向涉猎太广,需要学习的东西太多了,,,
还是要多多积累知识,对平时遇到的 payload 整理归类,便于以后使用或者提供思路。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值