[WesternCTF2018]shrine
ssti

源码放到vscode里面看

一句一句分析一下
第5,6句引入包。
然后第8句创建了一个flask示例叫app
第10句设置config里面一个配置项FLAG引入环境变量'FLAG',这样我们这个app的配置项config就有flag了
第13句开始就是/路由下显示源码,也就是我们刚打开docker看到的源代码
第18句是一个嵌套函数,/shrine/后可以传入参数,这也是ssti模板注入点,下面就是一段过滤,小括号没有了,并且每次运行的时候,config他会给我变成none
原本我们可以直接通过{{config}}找到flag的。现在就不行
这里我们用url_for这个flask自带的函数去写,这个会寻找静态文件,也就会开启一个服务

在这里面不会被置空
payload
/shrine/{{url_for.__globals__['current_app'].config}}
get_flashed_messages
返回之前在Flask中通过 flash() 传入的闪现信息列表。把字符串对象表示的消息加入到一个消息队列中,然后通过调用 get_flashed_messages() 方法取出(闪现信息只能取出一次,取出后闪现信息会被清空)。
也可以
原因
flask源码

这后面还会用这两个函数导入一遍

浙公网安备 33010602011771号