# Cross-site scripting Lab20 本題是 Stored XSS in onclick event handler,嘗試觸發 alert。 一樣先進入網站。  送出表單並查看原始碼。   這裡隨意輸入各種符號可知: - 在 Website 欄位填的內容會被放進 HTML 裡的 onclick="..."。 - `<` `>` `"` 都會變成 `<` `>` `"` - `'` 和 `\` 會變成 `\'`,也就是前面加跳脫 由於沒辦法打破 `onclick="..."` 的雙引號,也沒辦法用 `<script>`,但可以利用 JavaScript URL: ``` http://foo?'-alert(1)-' ``` 攻擊原理解析: Website 欄位內容最終會被當作 `href` 的值,例如: ``` <a href="http://foo?'-alert(1)-'" onclick="..."> ``` 因為整個內容是放進 `onclick="..."` 裡面,而你的 payload 被插進來後長這樣: ``` <a onclick="somecode('http://foo?'-alert(1)-'')"> ``` 但實際上單引號被跳脫變成 `\'`,所以這裡我們主動放入一些符號來平衡與關閉字串結構: `'` → HTML 的單引號。 `'-alert(1)-'` → 假設 onclick 內部是這樣處理字串會導致執行 alert。 整段 JavaScript 最終變成: ``` someFunction('http://foo?'-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