首页 > 编程语言 >python格式化字符串漏洞

python格式化字符串漏洞

时间:2024-08-02 10:11:01浏览次数:15  
标签:__ 格式化 name python 漏洞 字符串 Bob

在python中格式化字符串的方法有如下四种
第一种:%操作符,沿袭了C语言的风格

>>> name = 'Bob'
>>> 'Hello, %s' % name
"Hello, Bob"

第二种:string.Template,利用标准库中的模板字符串类进行字符串格式化.

>>> name = 'Bob'
>>> from string import Template
>>> t = Template('Hey, $name!')
>>> t.substitute(name=name)
'Hey, Bob!'

第三种:调用formate方法(存在安全问题)

>>> name , errno = 'Bob' , 50159747054
>>> 'Hello, {}'.format(name)
'Hello, Bob'
>>> 'Hey {name}, there is a 0x{errno:x} error!'.format(name=name, errno=errno)
'Hey Bob, there is a 0xbadc0ffee error!'

存在安全隐患的代码如下

>>> config = {'SECRET_KEY': '12345'}
>>> class User(object):
...  def __init__(self, name):
...   self.name = name
...
>>> user = User('joe')
>>> '{0.__class__.__init__.__globals__[config]}'.format(user)
"{'SECRET_KEY': '12345'}"

如果用来格式化的字符串存在问题,攻击者就可以通过注入特殊变量,带出敏感数据.
第四种:fStrings,允许执行字符串中的python表达式,功能强大,安全问题也可想而知

>>> a , b = 5 , 10
>>> f'Five plus ten is {a + b} and not {2 * (a + b)}.'
'Five plus ten is 15 and not 30.'
>>> f'{__import__("os").system("id")}'
uid=0(root) gid=0(root) groups=0(root)

找到两道例题,但是都没有环境,网上的wp也大多说的只言片语的,因此就没有进行实战测试.

标签:__,格式化,name,python,漏洞,字符串,Bob
From: https://www.cnblogs.com/meraklbz/p/18338095

相关文章

  • python需要学习的基础库
    Python在数据分析和机器学习领域非常强大,得益于其丰富的库和框架。以下是一些常用的数据分析和机器学习库,以及推荐的学习资源网站:数据分析库NumPy:提供高性能的多维数组对象和用于处理数组的工具。它是许多科学计算库的基础。学习资源:NumPy官方文档Pandas:为数据分析提供了......
  • python3之语音合成pyttsx3库使用
    pyttsx3pyttsx3是一个Python库,‌用于将文本转换为语音输出。‌它支持多种操作系统,‌包括Windows和macOS,‌并且提供了丰富的功能来控制文本到语音的转换过程。‌importpyttsx3msg="HelloWorld!"pyttsx3.speak(msg)engine=pyttsx3.init()engine.say(msg)engine.run......
  • Python 进行数据可视化(Matplotlib, Seaborn)
    数据可视化是数据科学和分析中的重要工具,它通过图形表示数据,使得复杂的数据变得易于理解和分析。在Python中,最常用的两个数据可视化库是Matplotlib和Seaborn。Matplotlib1.简介Matplotlib是一个用于生成二维图形的Python库。它提供了类似于Matlab的绘图接口,使用户能够轻松......
  • Python 学习中的 API,如何调用API ?
    1.1API的定义API,全称是ApplicationProgrammingInterface(应用程序编程接口)。它是一组定义好的协议和工具,用于在软件应用程序之间进行通信。API可以简化软件开发,使不同的应用程序能够相互协作。它是软件开发中非常关键的组成部分,因为它提供了一种标准化的方式来访问某些功能,......
  • 27、Python之面向对象:方生方死?对象生命周期是如何管理的
    引言前面关于面向对象的几篇文章,其实主要围绕着面向对象的第一个核心理念——封装,进行面向对象的介绍。从类、对象的静态构成的角度,对类与对象的定义及使用进行介绍。在进入面向对象另外两个理念的介绍之前,我觉得有必要对Python中对象的生命周期管理进行一些介绍,从而知道我们......
  • Python cv2库 批量压缩图片jpg、png 脚本
    效果图:(1)压缩前:10.9M   (2)压缩后:1.46M(3)直接上代码,#设置压缩质量0-100,0最差,100最好compression_params=[int(cv2.IMWRITE_JPEG_QUALITY),50]importcv2importosPATH=r'F:\aa_jpg'#压缩该路径下的图片,压缩后会保存到原路径defresizeImage(f......
  • 深度学习扫盲——PIL(python图像处理库)
    PIL(PythonImagingLibrary)库,也称为Pillow,是Python中广泛使用的PIL。它提供了丰富的图像处理功能,支持几乎所有图片格式的存储、显示和处理,能够完成图像的缩放、裁剪、叠加以及图像添加线条、图像和文字等操作。以下是对PIL库(Pillow)的详细介绍:一、基本介绍定义:PIL是PythonImagin......
  • Python 下载 html 中的 图片
    安装requests、beautifulsoup4库#安装requests、beautifulsoup4库pipinstallrequestsbeautifulsoup4-ihttps://pypi.tuna.tsinghua.edu.cn/simple完成代码#pipinstallrequestsbeautifulsoup4-ihttps://pypi.tuna.tsinghua.edu.cn/simpleimportosimportr......
  • 比较不同的excel,或者同一个excel的两个不同sheet页,并将不同之处标红,python代码实现
    importopenpyxlfromopenpyxl.stylesimportPatternFill#对比两个sheet,数据一致性校验#获取sheet对象的某一行defgetRow(sheet,rowNo):try:rows=[]forrowinsheet.iter_rows():rows.append(row)returnrows[rowNo-......
  • Python连接MinIO:实现高效的对象存储管理
    文章目录概要环境准备Python连接MinIO注意事项小结概要在云计算和大数据领域,对象存储因其可扩展性、高可用性和成本效益而备受青睐。MinIO是一个高性能的分布式对象存储服务器,它兼容AmazonS3云存储服务API。使用Python连接MinIO,你可以轻松地在你的应用程序中集成对......