[WesternCTF2018]shrine

位置混乱看不太清直接查看源代码

引入两个模块,一个flask,一个os。

然后用app.route装饰器传了两个路径,测试访问一下这个路径

发现显示到了上面,尝试模板注入

如果没有黑名单的时候,我们可以传入 config,或者传入{{self.dict}}获取,但当这些被过滤的时候,current_app,这是全局变量代理,查看他的config即可,源代码会发现这里过滤了()和把’config’,’self’加入了黑名单

那么原来格式的模板注入就不能用了,

这里可以利用两个python自带的函数来进行注入

url_for这个可以用来构造url,接受函数名作为第一个参数

get_flashed_message()是通过flash()传入闪现信息列表的,能够把字符串对象表示的信息加入到一个消息列表,然后通过调用get_flashed_message()来取出。
/shrine/{{url_for.globals}}

在里面打开current_app

{{url_for.__globals__[‘current_app’].config}}

另外一个方法 get_flashed_messages利用信息闪现的方法构造一样(只能显示一次)

/shrine/{{get_flashed_messages.globals[‘current_app’].config}}

发表评论

蜀ICP备2022010829号