# DOM-based Lab4
這題是 DOM-based Open Redirection 的練習題,目的是讓你透過 JavaScript 內處理 URL 的方式,把使用者從原網站偷偷重導到攻擊者的網站(通常是釣魚站或 exploit server)。
所以一樣先進入網站。

主頁我看過一遍都是一些文字跟圖片連結,沒有特別的東西,所以我查看每一篇文章的內容,結果在原始碼發現下列線索:
```html
<div class="is-linkback">
<a href='#' onclick='returnUrl = /url=(https?:\/\/.+)/.exec(location); location.href = returnUrl ? returnUrl[1] : "/"'>Back to Blog</a>
</div>
```
看起來有點像是被壓縮改過的,所以嘗試把她展開來看:
```js
let returnUrl = /url=(https?:\/\/.+)/.exec(location.href);
if (returnUrl) {
location.href = returnUrl[1];
} else {
location.href = "/";
}
```
也就代表:
這個按鈕點擊後,會把你網址中的 `url=` 參數值直接塞進 `location.href`,而這是 DOM-based redirect,只會在用戶端點擊時才執行。
```
https://0a7e005a040037b7804c03930043008d.web-security-academy.net/post?postId=6&url=https://exploit-0ace00ec048237c480ce029a017e00b1.exploit-server.net/
```

我們點 `Back to Blog` 時,頁面就會被跳轉,也意味著這題完成。

:::success
### 為什麼要「點擊 Back to Blog」?
這題是針對那些:
- 使用 onclick 操作跳轉的網站
- 沒有好好檢查 url 參數的來源
造成攻擊者可以帶入任意外部網址,誘導使用者點擊後跳轉到惡意網站
:::
---