# 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>
```

---