# Insecure deserialization Lab8
本題是基於序列化的會話機制,如果可以構建合適的小工具鏈,則可以利用本實驗室的不安全反序列化來獲取管理員的密碼。
要解決該實驗室,請訪問原始程式碼並使用它來構建小工具鏈以獲取管理員的密碼,然後登入並刪除 carlos。
可以使用以下認證登錄自己的帳戶:`wiener:peter`
一樣先進入網站並登入看 Cookie。

觀察 Cookie 。很顯然這次不是 b64,是 Java serialized object。
既然不能跟之前一樣直接看原文,那我們看看他有沒有其他檔案,而他確實有其他的 java 檔,所以就一個一個看看。

而在瀏覽其中一個檔可以發現他有用到 SQL 語法,`ProductTemplate.readObject()` 會把 id 丟進 SQL 查詢裡,也就是有 SQLi 了。

也就是說:只要我控制 id,我就能在 `readObject()` 的 SQL 中注入我想要的語句。因此我們可以建 gadget chain ,使用 Java 程式碼建立一個 ProductTemplate 物件並設定 id 欄位為 payload。
在 github 上面有範本讓我們可以直接使用,這樣我們可以直接減去寫腳本的時間,所以:

透過這個腳本可執行我們的 SQL 語法,他會將我們的內容以 Java serialized object 形式列出,我們再把這個結果丟到 session 裡面就可以執行。
所以我們用下面 SQL 語法,透過錯誤訊息來查密碼。
```
' UNION SELECT NULL, NULL, NULL, CAST(password AS numeric), NULL, NULL, NULL, NULL FROM users--
```

得出密碼:`5fql7pqpkw1xzaenmcy0`



---