# Cross-site scripting Lab11 本題是 DOM-based XSS 搭配 AngularJS 表達式注入,而且尖括號(<, >)與雙引號(")都被 HTML encode 了,所以我們必須走 Angular 表達式注入的路線。 一樣先進入網站。  隨便找個東西並看原始碼。  AngularJS 會掃描有 `ng-app` 屬性的 HTML 元素,並解析裡面的 表達式,例如 `{{1+2}}`。 輸入的內容被反映在有 `ng-app` 的區域內,但 `<>` 與 `"` 都會被 encode,代表你無法直接注入 `<script>` 或 `onerror="..."`,這時候可以用 AngularJS 的表達式注入技巧來繞過。 所以利用 AngularJS 表達式注入觸發 alert: ``` {{$on.constructor('alert(1)')()}} ``` - `{{$on}}` 是 AngularJS 預設在 scope 裡的事件函數。 - `$on.constructor` 回傳的是 Function。 - `Function('alert(1)')()` 就等於執行 `alert(1)`。 在輸入框輸入並搜尋後:   ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up