# WebSockets Lab2 本題要找到另一位使用者的聊天紀錄(紀錄中可能有帳密)並登入帳號,所以一樣先進入網站。 ![image](https://hackmd.io/_uploads/S1deJDtQxx.png) 到 Live Chat 裡面發送訊息,並看他的請求內容。 ![image](https://hackmd.io/_uploads/rkOAkwtQxl.png) 發現在我們開啟聊天的時候有一個`Ready`,但不確定用途,所以我嘗試重新整理網頁。 ![image](https://hackmd.io/_uploads/HkR6ewtQgl.png) 發現每次重新整理畫面後都會出現一次,所以有可能是要求伺服器回傳對話紀錄的訊息,也可以丟到 Repeater 中察看。 ![image](https://hackmd.io/_uploads/H124ZwKmel.png) 之外,這個網站似乎沒有做好 CSRF 的保護,因為在整個過程中,所有的請求並沒有包含不可預測的參數,有了以上的資訊,就來嘗試寫寫看 code ㄅ。 首先先建立連線。 ![image](https://hackmd.io/_uploads/rJP3mvtXel.png) - `wss://` 是 WebSocket over TLS(加密版),就像 https://。 :::danger 這是在受害者的瀏覽器中執行的程式碼,只要他開了這個 exploit 頁面,就會自動發起連線。 ::: 接著要模擬伺服器的行為。 ![image](https://hackmd.io/_uploads/S1LUNwKXgx.png) 當 WebSocket 成功連線後,發送字串 READY 給伺服器,在這個 Lab 裡,READY 是一個已知的命令,可以觸發伺服器把歷史聊天訊息傳回來。 ![image](https://hackmd.io/_uploads/HJj2uDK7xl.png) 而我們將回傳回來的訊息(event.data)透過 btoa 編碼後,以 GET 請求的形式發送到伺服器裡。 撰寫完後,我們回到網站裡面送出腳本並查看 log。 ![image](https://hackmd.io/_uploads/BkIs8wKXxg.png) ![image](https://hackmd.io/_uploads/Bk-NYwKmee.png) 發現回傳了五條訊息,所以我們拿去做解碼。 ![image](https://hackmd.io/_uploads/By-2tPFmll.png) 發現帳密後拿去登入。 `carlos:67rmyq1jldf457o2zn5p` ![image](https://hackmd.io/_uploads/HJlAFPK7gg.png) ### WebSockets Lab3 -> [write up](https://hackmd.io/@mio0813/r15V5wYQex) ---