[WesternCTF2018]shrine

ssti

image
源码放到vscode里面看
image
一句一句分析一下
第5,6句引入包。

然后第8句创建了一个flask示例叫app
第10句设置config里面一个配置项FLAG引入环境变量'FLAG',这样我们这个app的配置项config就有flag了

第13句开始就是/路由下显示源码,也就是我们刚打开docker看到的源代码

第18句是一个嵌套函数,/shrine/后可以传入参数,这也是ssti模板注入点,下面就是一段过滤,小括号没有了,并且每次运行的时候,config他会给我变成none

原本我们可以直接通过{{config}}找到flag的。现在就不行
这里我们用url_for这个flask自带的函数去写,这个会寻找静态文件,也就会开启一个服务
image
在这里面不会被置空
payload
/shrine/{{url_for.__globals__['current_app'].config}}

get_flashed_messages

返回之前在Flask中通过 flash() 传入的闪现信息列表。把字符串对象表示的消息加入到一个消息队列中,然后通过调用 get_flashed_messages() 方法取出(闪现信息只能取出一次,取出后闪现信息会被清空)。
也可以

原因
flask源码
image
这后面还会用这两个函数导入一遍

posted @ 2023-04-08 15:15  Dr0se  阅读(4)  评论(0)    收藏  举报