---
# System prepended metadata

title: Web II by 101
tags: [2024 NISRA Enlightened]

---

:::info
# Web II
講師：101
時間：8/27 13:30~16:30
課程簡報：[簡報](https://docs.google.com/presentation/d/1BinmjOjB3XKSwI3VQpZz88-2qzGVuWBM8Z24ppPLtZs/edit?usp=sharing)
:::

## XSS, Cross-Site Scripting
- 跨站腳本攻擊
- 目的
    - 竊取資料
    - 騙你移動到假的網站
    - 盜用身分

## Review

通常腳本會塞 `alert` 測試

- 事件
    - `onload`：頁面載入完畢時執行
        - `<div onload=''></div>`
    - `onclick`：滑鼠點擊元素時執行
        - `<span onclick=''></span>`
    - `onerror`：發生錯誤時執行
        - 圖片載入錯誤：`<img src onerror=''>`
- `<script></script>`


[XSS Cheat Sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)

## 反射型
- 注入方式
    - 將惡意程式隱藏在網址列or表單中
- 觸發方式
    - 會在使用者點擊連結或提交表單時觸發
## Lab 0x0

https://portswigger.net/web-security/cross-site-scripting/reflected/lab-html-context-nothing-encoded

## 儲存型
- 注入方式
    - 將惡意程式儲存在伺服器資料庫
- 觸發方式
    - 只要訪問含惡意程式的頁面，都會執行腳本

URL encode

## Lab 0x1

https://portswigger.net/web-security/cross-site-scripting/reflected/lab-html-context-nothing-encoded



## DOM 型
- 與反射型類似
- 在 URL 輸入 DOM 物件，把物件/事件嵌入網頁程式碼
- `document.getElementById('').innerHtml`

## Lab 0x2
https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink
#### 利用onload的解題步驟
1. 看到題目網頁，找到可以進行攻擊的輸入框
2. 在那個輸入框裡隨便打點東西，並點按按鈕送出
3. 按下F12，去觀察輸入的東西究竟跑到哪裡、修改了什麼
4. 找到有個img圖片標籤的src圖片網址後面明顯是我在輸入框裡隨便輸入的123
![image](https://hackmd.io/_uploads/BkKeaxojC.png)

5.利用onload事件，會在圖片加載成功後，立即執行function動作的原理，開始做XSS注入
6.也就是要在輸入框打上 ```'"onload="alert('')"```，成功用另一種方法解題~

## 預防 XSS

來路不明不要亂點
輸入帳密前要三思
保護餅乾:cookie:(HTTP only)

## XSS Game

https://xss-game.appspot.com/

call 外部 api：`//google.com/jsapi?callback=alert`

<!-- 聊天區
大家午安，有睡飽嗎
sicc:等一下就會看到我原地睡覺
新鮮的肝
-->

