Flask SSTI注意事項以及一些POC

2022-07-30 17:15:12 字數 1916 閱讀 9715

1.對於flask模板注入,首先是要判斷是否為注入點,即通過輸入表示式}觀察程式是是否執行,輸出結果。

2.__mro__與__base__的區別在於,__mro__返回的是乙個物件所屬的類繼承的全部類,可以有很多個。__base__返回的是其繼承的基類,只有乙個。

3.__subclasses__該模組是查詢到的結果是乙個類的全部子類,我們需要在這些子類中尋找可以利用的子類。這個模組返回的資料往往有很多,可以通過將這些資料存入到list,通過list.index('')來輸出所需要的的模組所在的位置。(我用的py指令碼會附在下面)可以利用的子類:warnings.catch_warnings(一般在59)、socket._socketobject(一般在71)、site._printer等模組。

warnings.catch_warinings是沒有內建os模組的需要匯入os模組(可自行驗證)

4.__builtins__是python的內建模組,內含有python內建的函式。可以通過此模組來呼叫內建函式如:eval、exec、open。也正是可以利用這些方法進行命令執行、檔案讀取。

5.os模組提供了多數作業系統的功能介面函式。當os模組被匯入後,它會自適應於不同的作業系統平台,根據不同的平台進行相應的操作。os模組中可以利用的函式:system(command)執行shell命令、listdir(dirname)列出dirname下的目錄和檔案、popen從乙個命令開啟乙個管道進行檔案讀取等。

6.區分python2和python3可以查詢__builtins__中是否有file有file的話是2沒有的話是3

收藏的pos

讀目錄、檔案}}

}}}頁面沒有回顯時

#命令執行: #

先通過for迴圈根據模組名尋找符合要求的模組}#

如果找到該模組就進行後續的函式操作

#結束判斷結束迴圈

#檔案操作

}

#

查詢需要的類在第幾位

#輸入查詢出來類的列表和需要借助的類名稱

deffind():

list = ""

list = list.replace('

\'',''

) list = list.replace('

<

',''

) list = list.replace('

>

',''

) list = list.replace('

class

',''

) list = list.replace('

enum

',''

) list = list.replace('

type

',''

) list = list.split(','

)

print

(list)

classname = '

warnings.catch_warnings

'num =list.index(classname)

print

(num)

if__name__ == '

__main__':

find()

列隊題解以及注意事項

這道題顯然要使用資料結構維護。但是n的規模十分大。我們便可以開n棵線段樹,動態開點。但是最後一列比較特殊,所以我們再開一棵線段樹維護最後一列。至於怎麼操作?我們考慮權值線段樹。權值線段樹一般是維護 權值為 l,r 的數有多少是滿足某種條件的。本道題目中我們維護區間 l,r 中有多少個數沒有操作過。線...

C 多型以及其注意事項

1 虛函式 覆蓋以及多型的概念 1 class 基類 的成員函式,稱為虛函式或方法。2 覆蓋 如果子類的成員函式和基類的虛函式具有 相同 的函式原型,那麼該成員函式就也是虛函式,無論其是否帶有virtual關鍵字,且對基類中的虛函式構成覆蓋。class 子類 public 基類 3 多型 如果子類提...

靜態的特點以及注意事項

static方法是類中的乙個成員方法,屬於整個類,即使不用建立任何物件也可以直接呼叫 優先於物件存在,被所有物件所共享 靜態方法 效率上要比例項化高,靜態方法 的缺點是不自動進行銷毀,而例項化的則可以做銷毀。靜態會隨著類的消失而消失,說明他的生命週期最長 1 靜態方法只能訪問靜態成員 2 靜態方法中...