# WebSockets Lab1
本題要觸發客服端的 alert(1),代表我們成功將惡意 payload 傳進客服的 Web UI並被執行,所以一樣先進入網站。

因為要注入訊息,所以我到 Live Chat 裡面發送訊息,並看他的請求內容。

接著我嘗試輸入其他符號,例如HTML語法之類的。

發現在輸入`<`的時候,他會自動更換成`<`,代表前端把我們的符號更改了
,所以這裡可以嘗試攔截他,改成我們想要的東西。

```
<img src=1 onerror='alert(1)'>
```
這是 一段 HTML + JavaScript 的組合,利用了 img 標籤的錯誤事件 onerror:
- `<img>`:HTML 裡用來放圖片的標籤
- `src=1`:這邊我們故意讓它失敗(1 不是合法圖片網址)
- `onerror='alert(1)'`:當圖片載入失敗時,會觸發 onerror,執行裡面的 JavaScript。
所以整串的意思是:放一張圖片,網址亂給讓它載入失敗,然後趁失敗的時候偷偷執行 alert(1)。

:::info
### 為什麼不用 `<script>alert(1)</script>`?
這個當然也可以用,但通常會被簡單的過濾器擋掉,比如:
- 過濾 `<script>` 這個 tag
- 過濾 alert
但`<img onerror>`這種變體,比較容易繞過簡單防禦,而且效能高、執行快。
*而且當初嘗試的時候整個聊天機器人壞掉也沒跳出其他回應,所以改成解題步驟中的方案。
:::
### WebSockets Lab2 -> [write up](https://hackmd.io/@mio0813/B1EfhLKmeg)
---