ctf-web

ctf-web

熱門

提供CTF挑戰中的網頁漏洞利用技術。當目標主要是HTTP應用程式、API、瀏覽器客戶端、模板引擎、身份驗證流程或智能合約的前端/後端攻擊面時使用,包括XSS、SQLi、SSTI、SSRF、XXE、JWT、身份驗證繞過、檔案上傳、請求走私、OAuth/OIDC、SAML、原型污染等類似網頁漏洞。不適用於原生二進位記憶體破壞、獨立可執行檔的逆向工程、磁碟或記憶體鑑識,或純密碼分析,除非網頁漏洞仍是取得旗標的主要途徑。

2723星標
328分支
更新於 2026/7/10
SKILL.md
readonlyread-only
name
ctf-web
description

Provides web exploitation techniques for CTF challenges. Use when the target is primarily an HTTP application, API, browser client, template engine, identity flow, or smart-contract frontend/backend surface, including XSS, SQLi, SSTI, SSRF, XXE, JWT, auth bypass, file upload, request smuggling, OAuth/OIDC, SAML, prototype pollution, and similar web bugs. Do not use it for native binary memory corruption, reverse engineering of standalone executables, disk or memory forensics, or pure cryptanalysis unless the web flaw is still the main path to the flag.

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 XSLT math:random() 種子猜測、SoapClient _user_agent CRLF 方法走私、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.prepare Unicode 同形字使用者名稱碰撞、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

初次掃描工作流程

  1. 識別真實邊界:僅瀏覽器、僅後端、混合應用或身份驗證流程。
  2. 在模糊測試前,為每個主要功能擷取一組正常的請求/回應對。
  3. 從 JS 套件、回應標頭、路由與替代方法中列舉隱藏功能。
  4. 分類可能的漏洞家族:注入、授權、解析器不匹配、上傳、信任代理、狀態機或用戶端執行。
  5. 先建立最小的證明:洩漏、繞過或原語。將完整的漏洞利用鏈留到後期。

快速入門指令

# 偵察
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 方法與內容類型:GETPOSTPUTPATCHTRACE、JSON、表單、multipart、XML。
  • 將檔案上傳、PDF/匯出、webhook、OAuth 回呼與管理員機器人功能視為可能的漏洞利用倍增器。

快速模式對應

常見鏈形狀

  • 偵察 -> 隱藏路由 -> 身份驗證繞過 -> 內部檔案讀取 -> 令牌或旗標
  • 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、程序命令列、除錯設定傾印
  • 資料庫:名為 flagflagssecret 的表格或植入的挑戰內容
  • HTTP:自訂標頭、存檔回應、隱藏路由、管理員匯出
  • 瀏覽器:隱藏 DOM 節點、data-* 屬性、內聯狀態物件、原始碼映射