tornado模版注入 [护网杯 2018]easy_tornado 1

 打开题目

打开flag.txt

告诉我们flag在 /fllllllllllllag下

打开welcome.txt

我们看到了render渲染函数,联想到ssti

打开hints.txt

然后我们留意到每个打开url上面都有filehash

告诉我们如果想要访问/fllllllllllllag下的flag文件,是需要filehash这个GET参数需要被mad5加密的filename(也就是/fllllllllllllag)与cookie_secret的md5加密才能访问最终的flag值
我们要想办法获取cookie_secret的值

我们将URL上的文件名修改替换为/fllllllllllllag试试

得到如下界面

提示?msg=Error

把url上的修改为?msg=/fllllllllllllag

但是我们随便写内容都能在页面上回显

包括我们加上{{}},模板注入必须通过传输型如{{xxx}}的执行命令

我们知道handler.settings是内置的环境配置信息名称

所以访问一下得到cookie_secret

cookie_secret: 1beaa4a8-aee4-4b8f-8b56-63b60cf13c24

这里需要注意的是三个url上的filehash都是小写字母

接下来我们构造payload就行

注意选择是32位小写

先是md5(filename)

接下来md5(cookie_secret+md5(filename))

1beaa4a8-aee4-4b8f-8b56-63b60cf13c24+3bf9f6cf685a6dd8defadabfb41a03a1

去掉加号加密得到78503f8a3e173f0546c4d6f35a52b713

组合一下得到payload

file?filename=/fllllllllllllag&filehash=78503f8a3e173f0546c4d6f35a52b713

得到flag

这里看到有别的师傅wp上用python脚本加密

这里借用一下师傅的

import hashlib  #选用哈希模块
filename = '/fllllllllllllag'  #文件名
cookie_secret = '76fc62a3-fea5-46ab-8f95-4b7262246f8c'#cookie_secret值
filename = hashlib.md5(filename.encode()).hexdigest()#/fllllllllllllag进行32位小写哈希md5加密
a = cookie_secret + filename#md5值进行拼接
filehash = hashlib.md5(a.encode()).hexdigest()#计算拼接后的md5值的md532小写的值
print(filehash)#输出加密后的md532位小写的值

知识点:

  • render函数和template函数

render 函数 跟 模板(template) 都是用来创建 html 模板的,Vue 推荐在绝大多数情况下使用模板(template)来创建你的 HTML

template是一种类HTML的语法,它定义了组件的结构和展示,包括HTML标签、属性、事件和插值等。Vue将template编译成render函数,最终将render函数渲染成虚拟DOM,并将其渲染到页面上。

render函数则是一个函数式组件,它的参数是一个createElement函数和上下文对象。render函数用代码方式描述组件的结构和展示,并返回一个虚拟DOM节点,最终也会被渲染到页面上。

相对于template,render函数更加灵活和强大,可以更精细地控制组件的展示。同时,由于render函数是JavaScript代码,因此它可以被更好地集成到其他代码中。template则更加容易编写和理解,但可能会受到HTML标签和属性的限制。

在实际开发中,我们可以选择使用template或render函数来定义组件,具体取决于组件的需求和开发者的习惯。如果组件需要较为复杂的展示逻辑和动态交互,可以使用render函数来实现。如果组件比较简单,可以使用template来编写。
 

  • 什么是模版注入?

模版注入就是存在于web应用中的注入漏洞,例如:

template = "Bio: {{ user.bio }}"
render(template)

如果使用此模板显示用户的输入,那么它是完全安全的,因为我们所做的只是从数据库中获取当前用户的信息,然后将其返回给用户,但下面这个例子就不太一样了:

template = "Bio:  " + USER_INPUT
render(template)

如果用户的输入的成为模板的一部分,就构成了ssti漏洞,因为模板有能力执行任意代码,所以用户可以在服务器上获得一个shell。攻击者可以在其中注入恶意模板代码来获得shell,但需要注意的一点是,该漏洞不仅限于服务器,只要模板可用,漏洞就可以存在于任何地方
 

  • 常见的模版

C#(StringTemplate,Sharepoint上动态使用的ASPX)。

Java(Velocity、Freemarker、Pebble、Thymeleaf和Jinjava)

PHP(Twig、Smarty、Dwoo、Volt、Blade、Plates、Mustache、Python、Jinja2、Tornado、mustache和String Template)。

Go (text/template)

  • tornado框架特点

cookie_secretApplication对象settings的属性中 ,访问它的话就需要知道它的属性名字

self.application.settings有一个别名是RequestHandler.settings

其中handler又是指向处理当前这个页面的RequestHandler对象

RequestHandler.settings指向self.application.settings

因此handler.settings指向RequestHandler.application.settings

    在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settingshandler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量。

    简单理解handler.settings即可,可以把它理解为tornado模板中内置的环境配置信息名称,通过handler.settings可以访问到环境配置的一些信息,看到tornado模板基本上可以通过handler.settings一把梭

收获:

1.了解到md5加密的python脚本

2.了解到handler.settings是tornado框架的环境配置文件

3.了解到模板注入必须通过传输型如{{xxx}}的执行命令

知识点源于:

buuctf easy-tornado(cookie_secret)_-栀蓝-的博客-CSDN博客

详解模板注入漏洞(上)_程序猿DD_的博客-CSDN博客

服务端模板注入攻击原理以及实战(SSTI)_服务器端模板注入-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/203781.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python -- python安装

1、python的诞生和发展: python语言是一种解释型、面向对象型、动态数据类型的高级程序设计语言。 2、python的安装: 1、安装解析器: 在安装的过程中需要注意的是: 在安装pycharm的时候也是同样的道理,需要指定安装…

python循环语句和函数

1.使用for循环打印9*9乘法表 for i in range(1, 10):for j in range(1, i1):print(i, "*", j, "", i*j, end"\t")print()结果&#xff1a; 2.使用while循环打印9*9乘法表 i 1 while i < 10:j 1while j < i1:print(i, "*", j…

基于APM(PIX)飞控和missionplanner制作遥控无人车-从零搭建自主pix无人车无人履带车坦克-2(以乐迪crossflight飞控为例)

这里重点以乐迪crossflight飞控为例进行组装调试。 1.刷写固件 安装最新版的乐迪地面站&#xff0c;在官网可以下载。由于产品里面不好找到对应的飞控&#xff0c;可以在首页滑动图片里进入。 1.连接飞控和电脑&#xff0c;查看com口&#xff0c;安装驱动。 2.刷写固件。如果…

4152A/E/F 调制域分析仪(0.125Hz~4GHz/26.5GHz/40GHz)

4152A/E/F 调制域分析仪 频率范围覆盖&#xff1a;0.125Hz&#xff5e;40GHz 能够精确表征信号频率随时间动态变化规律 01 产品综述 4152系列调制域分析仪能够精确表征信号频率随时间动态变化规律&#xff0c;最大监测带宽36GHz&#xff0c;最短每隔100ns无隙监测&#xff…

openGauss Summit 2023邀您参会

数据库作为千行万业数据的基石&#xff0c;也是推动数字经济发展的核心。随着数字经济的蓬勃发展&#xff0c;数据库将迎来更加广阔的应用场景和更加迫切的需求。openGauss 社区旨在汇聚产、学、研、用多方力量&#xff0c;聚焦基础软件核心能力的构建&#xff0c;引领国内数据…

基于OpenCV的手势识别系统设计与开发

摘要 随着计算机技术与信息处理技术迅速发展&#xff0c;智能化电子设备逐渐进入到日常的生产和生活中&#xff0c;与此同时&#xff0c;人们对电子设备操作过程的便捷化也提出了新的要求&#xff0c;这也促使计算机进行图像处理的技术也得到了发展。近些年兴起的模式识别技术…

PyQt6 QToolButton工具按钮控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计32条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

4方面详解微信小程序和H5的区别,开发者采用哪种开发比较好?

与传统App相比&#xff0c;开发时间更短、所需投入更低的移动应用一定是小程序和H5应用&#xff0c;企业在开发移动端的时候选择开发小程序还是H5好呢&#xff1f;对比两者的区别&#xff0c;来决定开发者采用哪种开发比较好。 01、运行环境不同 小程序&#xff1a;就是依赖于…

Linux地址空间随机化

ASLR(Address Space Layout Randomization)在2005年被引入到Linux的内核 kernel 2.6.12 中&#xff0c;早在2004年就以补丁的形式引入。内存地址的随机化&#xff0c;意味着同一应用多次执行所使用内存空间完全不同&#xff0c;也意味着简单的缓冲区溢出攻击无法达到目的。 1.…

如何判断数据库慢 SQL 查询?

慢 SQL 查询通常指执行时间较长或者消耗大量系统资源的查询。要判断一个 SQL 查询是否慢&#xff0c;可以考虑以下几个方面&#xff1a; 执行时间&#xff1a; 观察查询执行所需的时间。如果一个查询花费了相对较长的时间才能返回结果&#xff0c;可能就是慢查询的一个指标。通…

【Unity记录】EDM4U(External Dependency Manager)使用说明

GitHub - googlesamples/unity-jar-resolver: Unity plugin which resolves Android & iOS dependencies and performs version management 引入谷歌包时发现有这个玩意&#xff0c;主要用途是自动搜索工程内任意文件夹下的Editor/*Dependencies.xml文件 <dependencie…

2023智能手表行业洞察 | 独立通信成重要趋势,千元档位最受青睐

智研所联合紫光展锐发布《2023 智能手表行业洞察》报告&#xff0c;参与调研人数 1075 人&#xff0c;本次报告研究了智能手表行业从业人员及消费者对智能手表技术未来发展趋势的预判。 洞察报告显示&#xff0c;行业人员及消费者认为智能手表的技术趋势将呈现多样化发展&#…

计算机基础知识61

JsonResponse 功能例子 你自己写一个类&#xff0c;实现JsonResponse 功能&#xff0c;不需要传safeFalse&#xff0c;无论字典或列表&#xff0c;都能完成序列化返回给前端 1 响应头例子 四种情况&#xff0c;在响应头返回数据 xxxx # 第一种情况 JsonResponse def show(req…

数据通信——OSPF路由控制实验

实验需求 我们采用OSPF完成路由的控制&#xff0c;首先连接如下拓扑&#xff1a; 所有设备均属于area 0&#xff0c;网段及环回口配置如上图所示。 实验目的&#xff1a;R4和R1的环回口通信路径为R4——R2——R1若R2出现问题&#xff0c;自动切换到R3路径。 实验配置 1&am…

C++ CryptoPP使用AES加解密

Crypto (CryptoPP) 是一个用于密码学和加密的 C 库。它是一个开源项目&#xff0c;提供了大量的密码学算法和功能&#xff0c;包括对称加密、非对称加密、哈希函数、消息认证码 (MAC)、数字签名等。Crypto 的目标是提供高性能和可靠的密码学工具&#xff0c;以满足软件开发中对…

05-React路由(Router 5版本)

React路由背景介绍 背景介绍 多页面应用与SPA单页面应用 多页面应用 先说传统的多页面&#xff0c;需要写多个子页面 点击导航栏&#xff0c;整个页面都会刷新&#xff0c;但是实际上我只想刷新一小块的内容&#xff0c;其他东西变化不大 而且这个单页面&#xff0c;每次切…

风光互补路灯简介及配置方案

风光互补路灯是一种新型的路灯系统&#xff0c;使用太阳能和风能进行发电&#xff0c;以供给路灯照明。它结合了太阳能光伏板和垂直轴风力发电机&#xff0c;可以在一天内不同的时间段和天气条件下&#xff0c;通过自然资源发电&#xff0c;实现能源的自给自足和环境保护。 风…

鸿蒙系统扫盲(三):鸿蒙开发用什么语言?

1.两种开发方向 我们常说鸿蒙开发&#xff0c;但是其实鸿蒙开发分为两个方向&#xff1a; 一个是系统级别的开发&#xff0c;比如驱动&#xff0c;内核和框架层的开发&#xff0c;这种开发以C/C为主 还有一个是应用级别的开发&#xff0c;在API7以及以下&#xff0c;还是支持…

attention中Q,K,V的理解

第一种 1.首先定义三个线性变换矩阵&#xff0c;query&#xff0c;key&#xff0c;value&#xff1a; class BertSelfAttention(nn.Module):self.query nn.Linear(config.hidden_size, self.all_head_size) # 输入768&#xff0c; 输出768self.key nn.Linear(config.hidde…

Open3D 最小二乘拟合二维直线(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫网站自重。 一、算法原理 平面直线的表达式为: y = k x + b