SKILL.md
唯讀
名稱
ctf-web
描述
提供CTF挑戰中的網頁漏洞利用技術。當目標主要是HTTP應用程式、API、瀏覽器客戶端、模板引擎、身份驗證流程或智能合約的前端/後端攻擊面時使用,包括XSS、SQLi、SSTI、SSRF、XXE、JWT、身份驗證繞過、檔案上傳、請求走私、OAuth/OIDC、SAML、原型污染等類似網頁漏洞。不適用於原生二進位記憶體破壞、獨立可執行檔的逆向工程、磁碟或記憶體鑑識,或純密碼分析,除非網頁漏洞仍是取得旗標的主要途徑。
CTF 網頁漏洞利用
將此技能作為網頁密集型挑戰的路由與執行指南。初次掃描應簡短:先繪製應用程式地圖、確認信任邊界,再深入詳細技術筆記。
先決條件
Python 套件(所有平台):
pip install sqlmap flask-unsign requests
Linux(apt):
apt install hashcat jq curl
macOS(Homebrew):
brew install hashcat jq curl
Go 工具(所有平台,需安裝 Go):
go install github.com/ffuf/ffuf/v2@latest
手動安裝:
- ysoserial — GitHub,需安裝 Java(Java 反序列化 payload)
其他資源
- sql-injection.md - SQL 注入技巧:身份驗證繞過、UNION 提取、過濾器繞過、二階 SQLi、截斷、競爭輔助洩漏、INSERT ON DUPLICATE KEY UPDATE 密碼覆寫、innodb_table_stats WAF 繞過
- server-side.md - PHP 型別鬆散比較、php://filter LFI、Python str.format 遍歷、SSTI(Jinja2、Twig、ERB、Mako、EJS、Vue.js、Smarty)、SSRF(Host 標頭、DNS 重新綁定、curl 重定向、未跳脫點正則表達式、SNI FTP 走私、mod_vhost_alias)、PHP hash_hmac NULL
- server-side-2.md - XXE(基本、OOB、DOCX 上傳)、透過 X-Forwarded-For 的 XML 注入、PHP 變數變數、PHP uniqid 可預測檔名、順序正則替換繞過、命令注入(換行、黑名單、sendmail CGI、多重條碼、git CLI)、GraphQL 注入(內省、批次、插值)
- server-side-exec.md - 直接程式碼執行路徑、上傳到 RCE、反序列化相關執行、LaTeX 注入、標頭與 API 濫用
- server-side-exec-2.md - 更多執行鏈:SQLi 分段、路徑解析器技巧、多語言上傳、包裝器濫用、檔名注入、BMP 像素 webshell 搭配檔名截斷
- server-side-deser.md - Java/Python/PHP 反序列化與競爭條件操作手冊、PHP SoapClient CRLF SSRF 透過反序列化
- server-side-advanced.md - 進階 SSRF、遍歷、壓縮檔、解析器、框架與現代應用伺服器問題、Nginx 別名遍歷
- server-side-advanced-2.md - Docker API SSRF、Castor/XML、Apache 表達式讀取、解析器差異、Windows 路徑技巧、惡意 MySQL 伺服器檔案讀取
- server-side-advanced-3.md - 第三部分(CSAW/35C3/ASIS/PlaidCTF 2018):WAV 多語言上傳、多斜線 URL
path.startswith繞過、Xalan XSLTmath:random()種子猜測、SoapClient_user_agentCRLF 方法走私、gopher:///無主機 URL 方案繞過、SSRF 憑證洩漏透過攻擊者指定的出站 URL - server-side-advanced-4.md - 第四部分:WeasyPrint SSRF/檔案讀取(CVE-2024-28184)、MongoDB regex/$where 盲注 oracle、Pongo2 Go 模板注入、ZIP PHP webshell、basename() 繞過、wget CRLF SSRF→SMTP、Gopher SSRF 到 MySQL 盲注 SQLi、React Server Components Flight RCE(CVE-2025-55182)、AMQP/TLS 攔截透過 sslsplit+arpspoof、CairoSVG XXE、Bazaar 儲存庫重建
- client-side.md - XSS、CSRF、快取毒化、DOM 技巧、管理員機器人濫用、請求走私、付費牆繞過
- client-side-advanced.md - CSP 繞過、Unicode 技巧、XSSI、CSS 資料外洩、瀏覽器正規化怪癖、postMessage null 來源繞過
- auth-and-access.md - 身份驗證/授權繞過、隱藏端點、IDOR、重定向鏈、子域名接管、AI 聊天機器人越獄
- auth-and-access-2.md - 第二部分(2018 年):
std::unordered_set桶碰撞身份驗證繞過、nodeprep.prepareUnicode 同形字使用者名稱碰撞、SRP A=0/A=N 身份驗證繞過、ArangoDB AQL MERGE 權限提升 - auth-jwt.md - JWT/JWE 操作、弱金鑰、標頭注入、金鑰混淆、重放攻擊
- auth-infra.md - OAuth/OIDC、SAML、CORS、CI/CD 金鑰、IdP 濫用、登入毒化
- node-and-prototype.md - 原型污染、JS 沙箱逃逸、Node.js 攻擊鏈
- web3.md - Solidity 與 Web3 挑戰筆記
- cves.md - CVE 驅動的技巧,可與挑戰橫幅、標頭、依賴洩漏或版本字串比對
- field-notes.md - 長篇漏洞利用筆記:SQLi、XSS、LFI、JWT、SSTI、SSRF、命令注入、XXE、反序列化、競爭條件、身份驗證繞過與多階段鏈的快速參考
何時轉換
- 如果目標是原生二進位、自訂 VM 或韌體映像,請先切換至
/ctf-reverse。 - 如果 HTTP 漏洞僅提供程式碼執行,而困難部分變成記憶體破壞或 seccomp 逃逸,請切換至
/ctf-pwn。 - 如果「網頁」挑戰實際上涉及 JWT 數學、自訂 MAC 或密碼學原語,請切換至
/ctf-crypto。 - 如果網頁挑戰涉及分析日誌、PCAP 或從網頁伺服器還原工件,請切換至
/ctf-forensics。 - 如果挑戰需要在漏洞利用前從公開網頁來源、DNS 記錄或社交媒體收集情報,請切換至
/ctf-osint。
初次掃描工作流程
- 識別真實邊界:僅瀏覽器、僅後端、混合應用或身份驗證流程。
- 在模糊測試前,為每個主要功能擷取一組正常的請求/回應對。
- 從 JS 套件、回應標頭、路由與替代方法中列舉隱藏功能。
- 分類可能的漏洞家族:注入、授權、解析器不匹配、上傳、信任代理、狀態機或用戶端執行。
- 先建立最小的證明:洩漏、繞過或原語。將完整的漏洞利用鏈留到後期。
快速入門指令
# 偵察
curl -sI https://target.com
ffuf -u https://target.com/FUZZ -w wordlist.txt
curl -s https://target.com/robots.txt
# SQLi 快速測試
sqlmap -u "https://target.com/page?id=1" --batch --dbs
# JWT 解碼(不驗證)
echo '<token>' | cut -d. -f2 | base64 -d 2>/dev/null | jq .
# Cookie 解碼(Flask)
flask-unsign --decode --cookie '<cookie>'
flask-unsign --unsign --cookie '<cookie>' --wordlist rockyou.txt
# SSTI 探測
curl "https://target.com/page?name={{7*7}}"
curl "https://target.com/page?name={{config}}"
# 請求檢查
curl -v -X POST https://target.com/api -H "Content-Type: application/json" -d '{}'
首要回答的問題
- 旗標可能在瀏覽器、API 回應、本地檔案、資料庫列或內部服務中?
- 應用程式是否信任使用者控制的資料用於模板、重定向、檔案路徑、標頭、序列化物件或背景任務?
- 是否存在多個解析器彼此不一致:代理 vs 應用程式、URL 解析器 vs 擷取器、消毒器 vs 瀏覽器、序列化器 vs 過濾器?
- 能否先將漏洞轉化為較小的原語:讀取一個檔案、偽造一個令牌、呼叫一個內部端點、觸發一次機器人訪問?
高價值偵察檢查
- 在猜測 API 攻擊面之前,先閱讀 HTML、內聯腳本與打包的 JS。
- 比較 UI 提交的內容與後端接受的內容;可選的 JSON 欄位通常會解鎖隱藏路徑。
- 及早檢查明顯的中繼資料與輔助路徑:
/robots.txt、/sitemap.xml、/.well-known/、/admin、/debug、/.git/、/.env。 - 在感興趣的路由上嘗試替代 HTTP 方法與內容類型:
GET、POST、PUT、PATCH、TRACE、JSON、表單、multipart、XML。 - 將檔案上傳、PDF/匯出、webhook、OAuth 回呼與管理員機器人功能視為可能的漏洞利用倍增器。
快速模式對應
- SQL 錯誤、異常過濾或狀態依賴的資料庫行為:從 sql-injection.md 開始。
- 模板、檔案讀取、SSRF、命令執行、XML 或解析器漏洞:從 server-side.md 與 server-side-exec.md 開始。
- XSS、CSP 繞過、管理員機器人、用戶端路由、DOM 問題或無腳本資料外洩:從 client-side.md 開始。
- Session 偽造、隱藏管理員路由、JWT、OAuth、SAML 或弱信任邊界:從 auth-and-access.md、auth-jwt.md 與 auth-infra.md 開始。
- Node.js 應用程式、原型污染、VM 沙箱或 SSRF 到內部服務:加入 node-and-prototype.md。
- 智能合約前端或區塊鏈整合應用:加入 web3.md。
常見鏈形狀
- 偵察 -> 隱藏路由 -> 身份驗證繞過 -> 內部檔案讀取 -> 令牌或旗標
- XSS 或 HTML 注入 -> 管理員機器人 -> 特權操作 -> 金鑰洩漏
- 遍歷或上傳 -> 設定/原始碼洩漏 -> 金鑰恢復 -> Session 偽造
- SSRF -> 中繼資料或內部 API -> 憑證洩漏 -> 程式碼執行
- SQLi 或 NoSQL 注入 -> 憑證繞過 -> 第二階段模板或上傳濫用
深入筆記
一旦確認挑戰確實是網頁密集型且需要長篇漏洞利用目錄時,使用 field-notes.md。
- 偵察、SQLi、XSS、遍歷、JWT、SSTI、SSRF、XXE 與命令注入快速筆記
- 反序列化、競爭條件、檔案上傳到 RCE 與多階段鏈範例
- Node、OAuth/SAML、CI/CD、Web3、機器人濫用、CSP 繞過與現代瀏覽器技巧
- CVE 形操作手冊與仍出現在現代 CTF 中的舊挑戰模式
常見旗標位置
- 檔案:
/flag.txt、/flag、/app/flag.txt、/home/*/flag* - 環境變數:
/proc/self/environ、程序命令列、除錯設定傾印 - 資料庫:名為
flag、flags、secret的表格或植入的挑戰內容 - HTTP:自訂標頭、存檔回應、隱藏路由、管理員匯出
- 瀏覽器:隱藏 DOM 節點、
data-*屬性、內聯狀態物件、原始碼映射




