欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 模板引擎的注入問(wèn)題分析

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

這幾年比較火的一個(gè)漏洞就是jinjia2之類(lèi)的模板引擎的注入,通過(guò)注入模板引擎的一些特定的指令格式,比如 {{1+1}} 而返回了 2 得知漏洞存在。實(shí)際類(lèi)似的問(wèn)題在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

如果用戶(hù)輸入 %(password)s 那就可以獲取用戶(hù)的真實(shí)密碼了。

format方法相關(guān)

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

除了上面的payload改寫(xiě)為 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中的模板字符串類(lèi)似,有了獲取當(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'

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

相關(guān)文章

  • Python裝飾器如何實(shí)現(xiàn)修復(fù)過(guò)程解析

    Python裝飾器如何實(shí)現(xiàn)修復(fù)過(guò)程解析

    這篇文章主要介紹了Python裝飾器如何實(shí)現(xiàn)修復(fù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python實(shí)現(xiàn)統(tǒng)計(jì)單詞出現(xiàn)的個(gè)數(shù)

    Python實(shí)現(xiàn)統(tǒng)計(jì)單詞出現(xiàn)的個(gè)數(shù)

    這篇文章主要介紹了Python實(shí)現(xiàn)統(tǒng)計(jì)單詞出現(xiàn)的個(gè)數(shù),本文給出了實(shí)現(xiàn)代碼以及使用方法,需要的朋友可以參考下
    2015-05-05
  • Python使用CRC32實(shí)現(xiàn)校驗(yàn)文件

    Python使用CRC32實(shí)現(xiàn)校驗(yàn)文件

    CRC文件校驗(yàn)是一種用于驗(yàn)證文件完整性的方法,通過(guò)計(jì)算文件的CRC值并與預(yù)先計(jì)算的CRC校驗(yàn)值進(jìn)行比較,來(lái)判斷文件是否發(fā)生變化,本文我們就來(lái)介紹一下Python如何利用CRC32實(shí)現(xiàn)校驗(yàn)文件吧
    2023-10-10
  • python實(shí)現(xiàn)多層感知器MLP(基于雙月數(shù)據(jù)集)

    python實(shí)現(xiàn)多層感知器MLP(基于雙月數(shù)據(jù)集)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)多層感知器MLP,基于雙月數(shù)據(jù)集,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • python數(shù)據(jù)可視化Seaborn畫(huà)熱力圖

    python數(shù)據(jù)可視化Seaborn畫(huà)熱力圖

    這篇文章主要介紹了數(shù)據(jù)可視化Seaborn畫(huà)熱力圖,熱力圖的想法其實(shí)很簡(jiǎn)單,用顏色替換數(shù)字,下面我們來(lái)看看文章對(duì)操作過(guò)程的具體介紹吧,需要的小伙伴可以參考一下具體內(nèi)容,希望對(duì)你有所幫助
    2022-01-01
  • Django多個(gè)app urls配置代碼實(shí)例

    Django多個(gè)app urls配置代碼實(shí)例

    這篇文章主要介紹了Django多個(gè)app urls配置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • pyqt5?子線程如何操作主線程GUI(示例代碼)

    pyqt5?子線程如何操作主線程GUI(示例代碼)

    這篇文章主要介紹了pyqt5?子線程如何操作主線程GUI,在使用pyqt5編寫(xiě)gui時(shí)遇到兩個(gè)問(wèn)題,會(huì)導(dǎo)致界面崩潰,今天就圍繞這兩個(gè)問(wèn)題來(lái)簡(jiǎn)單說(shuō)明和改進(jìn),需要的朋友可以參考下
    2024-05-05
  • go和python調(diào)用其它程序并得到程序輸出

    go和python調(diào)用其它程序并得到程序輸出

    這里介紹下用python和go語(yǔ)言的實(shí)現(xiàn)將其它程序的輸出直接保存成變量供程序使用的方法,大家參考使用吧
    2014-02-02
  • Pycharm 如何設(shè)置HTML文件自動(dòng)補(bǔ)全代碼或標(biāo)簽

    Pycharm 如何設(shè)置HTML文件自動(dòng)補(bǔ)全代碼或標(biāo)簽

    這篇文章主要介紹了Pycharm 如何設(shè)置HTML文件自動(dòng)補(bǔ)全代碼或標(biāo)簽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python寫(xiě)捕魚(yú)達(dá)人的游戲?qū)崿F(xiàn)

    Python寫(xiě)捕魚(yú)達(dá)人的游戲?qū)崿F(xiàn)

    這篇文章主要介紹了Python寫(xiě)捕魚(yú)達(dá)人的游戲?qū)崿F(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論