理解 XSS、SQLi、CSRF 的核心原理與攻擊流程。
在本地 lab(Juice Shop 或 DVWA/自建 Flask)測試至少一種漏洞。
能產出證據(request/response 截圖)與 5 行解題步驟。
簡明說明 + 測試 payload(僅用在本機 lab)
XSS(跨站腳本)
原理:攻擊者讓惡意 JavaScript 在受害者瀏覽器執行(回顯或儲存點)。
簡單 payload(反射 / 測試):
<script>alert('XSS')</script>
<img src=x onerror=alert(1)>
測試步驟(範例):
在輸入欄或 query 參數插入 payload,送出。
使用瀏覽器 DevTools / Burp 檢查 response 是否包含原始 payload。
若跳 alert,擷取截圖與 request/response。
SQLi(結構化查詢注入)
原理:不安全的 SQL 查詢把使用者輸入直接拼接進查詢,攻擊者可修改語意。
基本 payload(測試性):
' OR '1'='1
' UNION SELECT null, version() --
測試步驟(範例):
在 DVWA 的 SQLi 頁面輸入 1' OR '1'='1,送出。
若回傳多筆資料或顯示 DB 資訊,擷取截圖與被送出的 SQL(可用 Burp 抓包)。
(進階僅在 lab)用 sqlmap 測試自動化偵測:sqlmap -u "http://localhost/vuln?page=1" --risk=1 --level=1 --batch。
CSRF(跨站請求偽造)
原理:受害者在已登入網站時,被誘導瀏覽惡意網頁,該頁發送未授權的請求(例如轉帳)。
示範惡意表單(本機 lab 測試):
<form action="http://localhost:5000/change_email" method="POST">
<input type="hidden" name="email" value="attacker@example.com">
<input type="submit" value="Submit">
</form>
<script>document.forms[0].submit();</script>
測試步驟:
在受控 lab 建具備 session(登入)狀態的目標。
在另一個瀏覽器 tab 開上方表單頁面,確認是否能在不輸入密碼下變更資源。
檢查目標是否有 anti-CSRF token 或 SameSite cookie。
今天實作任務(照做)
選一項漏洞(XSS / SQLi / CSRF)在本地 lab 測試(Juice Shop、DVWA 或你自建的 Flask)。
安全提醒(重要)
僅在你有授權或自建的 lab 測試。
切勿將 payload 或攻擊執行於公網或非授權目標。
若 AI 提供高風險 exploit,務必人工審查後再執行。
今天完成 Day9:理解 XSS、SQLi 與 CSRF 原理,並在本地 lab 實作與截圖證據。使用 Burp 與 DevTools 重放請求,確認 payload 回顯與 SQL 注入行為,並擬出修復建議。接下來整理成可重現的教學報告。