1. 程式人生 > 其它 >CTF-flask模板注入學習

CTF-flask模板注入學習

今天又看到了一道這樣的題,之前一直都學不明白的東西

反反覆覆給你看的時候,就想搞明白了。

我們做題的,需要知道flask是怎麼執行的就行了。

這個就是一個最簡單的flask應用,當我們訪問的時候,就會顯示hello world的字樣。

flask之所以安全是因為他是靠渲染的flask的渲染方法有render_template和render_template_string兩種。

大的不用懂,我們這樣理解,寫一個py檔案,來帶動html來顯示頁面就行。
和正常的html不同的是,這個頁面是靠py檔案來驅使的。

但這個時候,我們就又迷糊了,如果html要傳個引數什麼的,該怎麼寫?

就是這樣。

重點就是{{}}在Jinja2中作為變數包裹識別符號。

模板注入

不正確的使用flask中的render_template_string方法會引發SSTI。

這個code是使用者可控的,那就可以傳入xss程式碼和後面的html程式碼拼接,造成xss。

但是我們改一下


這樣把我們傳的引數放入 render_template_string中。就會被預設轉義了。

瞭解了漏洞形成的原因,但是我們怎麼在CTF利用中。

大多是通過漏洞讀取flag檔案。