# Cross-site scripting Lab9
本題 Reflected XSS,反射點出現在一段 JavaScript 字串中,而且尖括號 (< >) 有被 HTML encode,所以不能直接寫 `<script>`。
一樣先進入網站。

隨便搜尋個東西並查原始碼。

這裡會把 searchTerms 設定為字串 `bg`,使用 `document.write()` 將一張追蹤圖片插入頁面,圖片的 URL 中會帶上 searchTerms 的值作為參數,最終產出的 HTML 會像這樣:
```
<img src="/resources/images/tracker.gif?searchTerms=bg">
```
這段程式碼的弱點會發生在 searchTerms 是從 location.search(網址列)讀入的情況,簡單來說,我們可以控制 searchTerms 的值。
但尖括號會被弄掉,所以我們用單引號
```
'-alert(1)-'
```
`'`:關閉兩邊的單引號。
`-`:讓 payload 更穩定地避開語法錯誤。


:::info
### 為什麼要包 -?
這些 `-` 是裝飾用的字元,主要作用:
- 保證你寫的 payload 是一段合法的 JS 字串。
- 讓你的 payload 包在安全的字元中,避免前後語法衝突。
- 在某些情況下,可以混淆偵測規則(例如某些簡單的 XSS filter)。
:::
---