# SSTI Lab2 本題是 Tornado template 的 code context 型 SSTI(Server-Side Template Injection),因為它不安全地使用 Tornado 範本。要解決該實驗室問題,請查看 Tornado 文件以瞭解如何執行任意代碼,從 Carlos 的主目錄中刪除該檔。morale.txt 可以使用以下認證登錄自己的帳戶:`wiener:peter` 一樣先進入網站。   登入後可以改電子郵件跟名字設定,而這裡可以發現說,在發表的留言上面顯示「作者名稱」,而這個「名稱」是可以變的,在「My account」頁面可以設定顯示名稱為: - `user.name` - `user.first_name` - `user.nickname` 這已經明顯透露使用者顯示名稱是從變數中用 template 渲染出來的,而且你能控制是哪個變數。 ``` template + 你能控制變數名 = code context injection(有機率是) ``` 所以我們從這裡去破解他看看,先攔截他的請求封包。  這裡可以嘗試加入兩段資訊,看看他會不會成功,如果成功的話應該會是使用者名再接上 49。   雖然是 302,但回到網站確實成功了,接著下一步就是用點 Python 來搞事。(Tornado 是一個 Python 的 Web 框架) 補充: - `{{ ... }}` → 顯示變數或運算結果。 - `{% ... %}` → 執行任意 Python 語法。 那我們一樣先 import os,再輸入指令 ls,看東西在哪。 ```js {{__import__('os').system('ls')}} ```  找到目標檔案,所以直接 rm 刪除。 ```js <%25=+system(%22rm+morale.txt%22)+%25> ```  ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up