# Cross-site scripting Lab19 本題是輸入被反映進一段 JavaScript 字串中,而且會經過編碼。 一樣先進入網站。 ![image](https://hackmd.io/_uploads/rJ-3WZmHgg.png) 搜尋並查看原始碼。 ![image](https://hackmd.io/_uploads/S1BRZWmBll.png) ![image](https://hackmd.io/_uploads/Sy87GWXBxx.png) 這裡隨意輸入各種符號可知: - 單引號 `'` 被跳脫為 `\'`。 - 雙引號 `"` 和 `<` `>` 被 HTML 編碼為 `&quot;`、`&lt;`、`&gt;`。 - 反斜線 `\` 沒有被跳脫。 所以: ``` \'-alert(1)// ``` 到 JS 當中: ``` var searchTerms = '\' - alert(1) //'; ``` - `\'` 產生一個「未封閉的跳脫字元」,實際輸出的是 `'`。 - `-alert(1)` JavaScript 中合法表達式,`-` 把前後斷開。 - `//` 把後面的結尾註解掉,避免語法錯誤。 最後拿去搜尋。 ![image](https://hackmd.io/_uploads/S1bzmZmrel.png) ![image](https://hackmd.io/_uploads/rJuzQ-Xrll.png) ---