python模板注入_Python 模板字符串与模板注入

这几年比较火的一个{{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方法相关

除了上面的payload改写为 print ("Password " + passwd + " is wrong for user {user}").format(**userdata)

之外,还可以

>>> import os

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

''

会先把 0

替换为 format

中的

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

例子:

CONFIG = {

'SECRET_KEY': 'super secret

如果 format_string

为 {event.__init__.__globals__[CONFIG][SECRET_KEY]}

就可以泄露敏感信息。

Python 3.6中的 f

字符串

这个字符串非常厉害,和Javascr

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

但是貌似 没有

把一个普通字符串转换为 f

字符串的方法,也就是说用户很可能无法控制一个 f

字符串,可能无法利用,还需要继续查一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值