CTF-flask模板注入學習
阿新 • • 發佈:2021-08-23
今天又看到了一道這樣的題,之前一直都學不明白的東西
反反覆覆給你看的時候,就想搞明白了。
我們做題的,需要知道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中。就會被預設轉義了。