最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 模板引擎的注入問題分析

 更新時(shí)間:2017年01月01日 23:15:03   作者:virusdefender  
本文給大家主要講述的是Python 模板引擎的注入問題分析,以及如何防范和需要注意的地方,有需要的小伙伴可以參考下

這幾年比較火的一個(gè)漏洞就是jinjia2之類的模板引擎的注入,通過注入模板引擎的一些特定的指令格式,比如 {{1+1}} 而返回了 2 得知漏洞存在。實(shí)際類似的問題在Python原生字符串中就存在,尤其是Python 3.6新增 f 字符串后,雖然利用還不明確,但是應(yīng)該引起注意。

最原始的 %

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 那就可以獲取用戶的真實(shí)密碼了。

format方法相關(guān)

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)
'<built-in function system>'

會(huì)先把 0 替換為 format 中的參數(shù),然后繼續(xù)獲取相關(guān)的屬性。

但是貌似只能獲取屬性,不能執(zhí)行方法?但是也可以獲取一些敏感信息了。

例子: 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 字符串

這個(gè)字符串非常厲害,和Javascript ES6中的模板字符串類似,有了獲取當(dāng)前context下變量的能力。

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

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

而且不僅僅限制為屬性了,代碼可以執(zhí)行了。

>>> 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'

但是貌似 沒有 把一個(gè)普通字符串轉(zhuǎn)換為 f 字符串的方法,也就是說用戶很可能無法控制一個(gè) f 字符串,可能無法利用,還需要繼續(xù)查一下。

相關(guān)文章

  • pytorch中的torch.nn.Conv2d()函數(shù)圖文詳解

    pytorch中的torch.nn.Conv2d()函數(shù)圖文詳解

    這篇文章主要給大家介紹了關(guān)于pytorch中torch.nn.Conv2d()函數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 解決django同步數(shù)據(jù)庫的時(shí)候app models表沒有成功創(chuàng)建的問題

    解決django同步數(shù)據(jù)庫的時(shí)候app models表沒有成功創(chuàng)建的問題

    今天小編就為大家分享一篇解決django同步數(shù)據(jù)庫的時(shí)候app models表沒有成功創(chuàng)建的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python使用itchat模塊給心愛的人每天發(fā)天氣預(yù)報(bào)

    python使用itchat模塊給心愛的人每天發(fā)天氣預(yù)報(bào)

    這篇文章主要介紹了python使用itchat模塊給心愛的人每天發(fā)天氣預(yù)報(bào),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • flask + pymysql操作Mysql數(shù)據(jù)庫的實(shí)例

    flask + pymysql操作Mysql數(shù)據(jù)庫的實(shí)例

    下面小編就為大家?guī)硪黄猣lask + pymysql操作Mysql數(shù)據(jù)庫的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • 基于Python+Pyqt5開發(fā)一個(gè)應(yīng)用程序

    基于Python+Pyqt5開發(fā)一個(gè)應(yīng)用程序

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著Python+Pyqt5開發(fā)一個(gè)應(yīng)用程序展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Django進(jìn)階之CSRF的解決

    Django進(jìn)階之CSRF的解決

    這篇文章主要介紹了Django進(jìn)階之CSRF的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • python實(shí)現(xiàn)爬取圖書封面

    python實(shí)現(xiàn)爬取圖書封面

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)爬取圖書封面的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python3 queue隊(duì)列模塊詳細(xì)介紹

    Python3 queue隊(duì)列模塊詳細(xì)介紹

    queue是python中的標(biāo)準(zhǔn)庫,俗稱隊(duì)列。這篇文章給大家介紹了Python3 queue隊(duì)列模塊,包括模塊中的常用方法及構(gòu)造函數(shù),需要的朋友參考下吧
    2018-01-01
  • python PyQt5/Pyside2 按鈕右擊菜單實(shí)例代碼

    python PyQt5/Pyside2 按鈕右擊菜單實(shí)例代碼

    本文通過實(shí)例代碼給大家介紹了python PyQt5/Pyside2 按鈕右擊菜單,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-08-08
  • python進(jìn)階之魔術(shù)方法詳解

    python進(jìn)階之魔術(shù)方法詳解

    這篇文章主要為大家介紹了python進(jìn)階之魔術(shù)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評(píng)論

剑川县| 南雄市| 云林县| 吴川市| 清流县| 门源| 措勤县| 江川县| 内丘县| 剑河县| 葵青区| 乌什县| 平和县| 马龙县| 郑州市| 行唐县| 华容县| 陇川县| 二连浩特市| 阿拉尔市| 伊吾县| 三穗县| 中西区| 宁南县| 永新县| 苗栗市| 广丰县| 眉山市| 介休市| 射洪县| 东台市| 项城市| 新绛县| 罗甸县| 林西县| 泾源县| 额济纳旗| 凤阳县| 长岭县| 高雄县| 灵武市|