首页 > 其他 > 详细

buu-[护网杯 2018]easy_tornado

时间:2021-06-09 21:50:33      阅读:36      评论:0      收藏:0      [点我收藏+]

打开题目,发现给了3个文件的链接

技术分享图片

 

一一点开看看

技术分享图片

 

 技术分享图片

 

 

技术分享图片

 

 分别告诉了flag在那个文件夹里和一个render(渲染)提示和一个计算公式

通过观察可以发现url里有一个filehash参数,猜测就是通过这个公式计算出来的

因为不知道cookie,要先找到cookie

先访问/fllllllllllllag试试

发现报错了

技术分享图片

 

 观察到url里有个msg的参数的值为Error

随便改一下试试

技术分享图片

 

 突然想到题目给的信息

技术分享图片

 

 猜测是python模板注入

但是发现使用正常使用的模板注入都是返回orz

技术分享图片

 

 联想到第二个提示

一起查了下

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

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

而handler.settings对象就是其中一个
handler对象的handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所有handler.settings就指向RequestHandler.application.settings,大概就是说,这里面就是我们一些环境变量了

构造payload:msg={{handler.settings}}

就得到了cookie_secret

技术分享图片

 

 

 接下来就可以来通过计算公式来计算f当filename=/fllllllllllllag时filehash的值

脚本如下

import hashlib
 
def md5encode(str):
    m = hashlib.md5()
    m.update(str)
    return m.hexdigest()
 
 
filename = /fllllllllllllag
cookie_secret = 91654012-dbb2-458c-ac33-41db2723fbe5
name = name.encode()
a = md5encode((cookie_secret + md5encode(filename)).encode())
print(a)

得到filehash为技术分享图片

 

代入即可

 

技术分享图片

 

buu-[护网杯 2018]easy_tornado

原文:https://www.cnblogs.com/c0d1/p/14868571.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!