这几年比较火的一个漏洞就是jinjia2之类的模板引擎的注入,通过注入模板引擎的一些特定的指令格式,比如 {{1+1}} 而返回了 2 得知漏洞存在。实际类似的问题在Python原生字符串中就存在,尤其是Python 3.6新增 f 字符串后,虽然利用还不明确,但是应该引起注意。

最原始的 %

userdata = {"user" : "jdoe", "password" : "secret" }

passwd = raw_input("Password: ")

if passwd != userdata["password"]:

print ("Password " + passwd + " is wrong for user %(user)s") % userdata

如果用户输入 %(password)s 那就可以获取用户的真实密码了。

format方法相关

https://docs.python.org/3/library/functions.html#format

除了上面的payload改写为 print (“Password ” + passwd + ” is wrong for user {user}”).format(**userdata) 之外,还可以

>>> import os

>>> '{0.system}'.format(os)

''

会先把 0 替换为 format 中的参数,然后继续获取相关的属性。

但是貌似只能获取属性,不能执行方法?但是也可以获取一些敏感信息了。

例子: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/

CONFIG = {

'SECRET_KEY': 'super secret key'

}

class Event(object):

def __init__(self, id, level, message):

self.id = id

self.level = level

self.message = message

def format_event(format_string, event):

return format_string.format(event=event)

如果 format_string 为 {event.__init__.__globals__[CONFIG][SECRET_KEY]} 就可以泄露敏感信息。

Python 3.6中的 f 字符串

这个字符串非常厉害,和Javascript ES6中的模板字符串类似,有了获取当前context下变量的能力。

https://docs.python.org/3/reference/lexical_analysis.html#f-strings

>>> a = "Hello"

>>> b = f"{a} World"

>>> b

'Hello World'

而且不仅仅限制为属性了,代码可以执行了。

>>> import os

>>> f"{os.system('ls')}"

bin etc lib media proc run srv tmp var

dev home linuxrc mnt root sbin sys usr

'0'

>>> f"{(lambda x: x - 10)(100)}"

'90'

但是貌似 没有 把一个普通字符串转换为 f 字符串的方法,也就是说用户很可能无法控制一个 f 字符串,可能无法利用,还需要继续查一下。

您可能感兴趣的文章:Python的Flask框架标配模板引擎Jinja2的使用教程深入解析Python的Tornado框架中内置的模板引擎为Python的Tornado框架配置使用Jinja2模板引擎的方法Python的Flask框架中的Jinja2模板引擎学习教程Python Web开发模板引擎优缺点总结python Django模板的使用方法(图文)基于python实现微信模板消息常用python编程模板汇总Python的Django框架中模板碎片缓存简介Python实现的简单模板引擎功能示例

python模板注入_Python 模板引擎的注入问题分析相关推荐

  1. python模板注入_Python模板注入(SSTI)深入学习

    前言 一直对模板注入似懂非懂的,打算在这篇文章中深入的研究一下模板注入以及在ctf中bypass的办法. Learning 什么是模板&模板注入 小学的时候拿别人的好词好句,套在我们自己的作文 ...

  2. python注入_python的常见命令注入威胁

    ah!其实没有标题说的那么严重! 不过下面可是我们开发产品初期的一些血淋淋的案例,更多的安全威胁可以看看北北同学的<python hack>PPT,里面提及了不只命令执行的威胁,那些都是我 ...

  3. python渲染光线_python模板渲染配置文件

    python的mako.jinja2模板库,确实好用!这里做个笔记,好记性不如烂笔头. #!/usr/bin/env python #encoding=utf-8 import sys,yaml    ...

  4. python template模块_Python模板库Mako的用法

    Mako是一个高性能的Python模板库,它的语法和API借鉴了很多其他的模板库,如Django.Jinja2等等. 基本用法 创建模板并渲染它的最基本的方法是使用 Template 类: from  ...

  5. python注入_Python如何考虑代码注入安全?

    使用ast.literal_eval(), 只允许使用 string,bytes,number,tuples,lists,discts,set,booleans,None ast.literal_ev ...

  6. pythonsql注入_python使用mysql,sql注入问题

    python使用mysql importpymysql conn=pymysql.connect( host= '127.0.0.1', #连接地址 port = 3306, #端口 user = r ...

  7. python内存数据库触发器_Python内存数据库/引擎

    初探 在平时的开发工作中,我们可能会有这样的需求:我们希望有一个内存数据库或者数据引擎,用比较 Pythonic 的方式进行数据库的操作(比如说插入和查询). 举个具体的例子,分别向数据库 db 中插 ...

  8. python 参数解析_python的函数对参数解析分析

    以下转自其它博客.觉得总结得太好了,所以拿来自己参考一下. python中函数参数的传递是通过赋值来传递的. 函数参数的使用又有俩个方面值得注意: 1.函数参数是如何定义的 2.在调用函数的过程中参数 ...

  9. python哨兵循环_Python通用循环的构造方法实例分析

    本文实例讲述了python通用循环的构造方法.分享给大家供大家参考,具体如下: 1.交互循环 是无限循环的一种,允许用户通过交互的方式程序的特定部分: def main(): sum =0.0 cou ...

  10. python raise语句_python中异常报错的分析处理

    想必到现在经过python基础的学习之后,小伙伴们都已经开始写很多脚本了,有大的有小的,但是有的时候并不是所写的能够顺利跑出结果来,期间会有不但的报错以及异常,很多我们都不理解,所以也就不会修改,这是 ...

最新文章

  1. 2008软考网络工程师题
  2. Linux下搭建FTP服务器笔记
  3. 机器学习问题总结(01)
  4. ZZULIOJ 1126: 布尔矩阵的奇偶性
  5. Vue3脚手架安装vue @/cli
  6. ASP.NET Session的七点认识
  7. phpstrpos不存在_深入理解PHP之strpos
  8. html回调函数,JS 回调函数
  9. 每天一个小技巧(新建桌面)
  10. 【计算广告】边际成本的妙用
  11. 流程表结构设计第一版
  12. 【产品人生】<基础认知>产品分析方法产品体验分析报告撰写
  13. 怎样隐藏计算机中的文件夹,电脑上的文件夹不想被别人看到怎么办?如何隐藏电脑文件夹?-电脑文件夹怎么加密...
  14. 全球与中国云监控软件市场深度研究分析报告(2021)
  15. 搭建vue前端脚手架
  16. 关于点进Steam页面白屏解决办法
  17. 回顾LIGO之父的传奇人生,这次他会再失诺贝尔物理学奖吗?
  18. 历史性时刻,Python要成为TIOBE编程语言榜首?
  19. python全盘搜索文件_python实现全盘扫描搜索功能的方法
  20. 智能车自动控制快速停车_控制您的智能手机的自动照片上传

热门文章

  1. htm5l,第一个script代码练习
  2. 为七牛云存储开发的PHP PEAR 包:Services_Qiniu
  3. 【Ubuntu^Java】Ubuntu下JDK环境变量的配置
  4. js 阻止冒泡 在控件的 onxxx 事件中调用就可以阻止父控件也响应消息了
  5. 我亦云云——也谈云计算(3)
  6. [译] Commit 提交指南
  7. 防止sql注入攻击的方法总结 1
  8. 009-Shell 函数
  9. css3简记,了解一下?
  10. 利用Twemperf测试Memcache的性能