KeyFrame內部研究專用

TryHackMe Fools Mate, Revenge | Prototype Pollution | Full Walkthrough 2026

Djalil Ayed·7月4日週六·15 min英文

三句話摘要

演示通過 JavaScript prototype pollution 漏洞繞過服務器端安全驗證的 CTF 挑戰解法。 當遇到被過濾的 JSON 端點時,prototype pollution 是在質量分配失效後值得嘗試的高級利用技巧,尤其是使用 `constructor.prototype` 來繞過 `__proto__` 的過濾。 防禦層級遷移:與前一個房間不同,驗證邏輯由服務器執行,服務器返回的錯誤訊息「session config and locked is not set」明確指出需要設置的變數,無法通過客戶端修改繞過。

重點整理

重點
  • 1

    防禦層級遷移:與前一個房間不同,驗證邏輯由服務器執行,服務器返回的錯誤訊息「session config and locked is not set」明確指出需要設置的變數,無法通過客戶端修改繞過。

  • 2

    識別 JSON 端點漏洞:通過網絡流量檢查,發現偏好設置端點(preferences endpoint)接受 JSON 格式數據,嘗試在此端點進行質量分配攻擊,但被過濾。

  • 3

    Prototype pollution 替代方案:當質量分配失效時,利用 JavaScript 對象原型鏈特性,通過注入 `constructor.prototype` 來污染全局對象,使新屬性應用到所有對象實例。

  • 4

    繞過過濾的技巧:`__proto__` 語法被過濾,但 `constructor.prototype` 未被過濾,改用後者成功傳遞 payload 並修改應用行為。

實用技巧與重點

乾貨
  • 被驗證的變數:`locked`
  • 需要設置的值:`true`
  • 目標端點:偏好設置端點
  • 被過濾的語法:`__proto__`
  • 有效 payload 語法:`constructor.prototype.unlock=true` 或 `constructor.prototype.locked=true`
  • 請求方式:POST JSON
  • 服務器初始錯誤訊息:「reward gate closed, session config and locked is not set」

結論

結論

當遇到被過濾的 JSON 端點時,prototype pollution 是在質量分配失效後值得嘗試的高級利用技巧,尤其是使用 `constructor.prototype` 來繞過 `__proto__` 的過濾。

完整解析

詳細

這支影片演示的是一個網絡安全 CTF 挑戰的解決過程。講者首先通過檢查網絡流量發現,與前一個房間不同的關鍵差異在於防禦機制已經遷移到了服務器端。當他嘗試直接修改客戶端狀態時,服務器返回的錯誤訊息清楚地表示「session config and locked is not set」,這提示他需要以某種方式設置一個與 `locked` 相關的變數。

講者接著嘗試了最直接的攻擊方法——質量分配(mass assignment)。他在 API 請求中添加 `unlocked=true` 等參數,但服務器沒有接受。然後他發現應用中的偏好設置端點也使用 JSON 格式,他繼續在該端點上嘗試質量分配,但同樣被過濾。

當傳統方法失效時,講者轉向了 JavaScript 特定的高級漏洞——prototype pollution。他首先嘗試使用 `__proto__` 語法來污染原型鏈,但發現這個語法被過濾了。隨後他改用 `constructor.prototype` 的方式繞過過濾。通過構造 `constructor.prototype.unlock=true` 這樣的 payload,他成功地污染了全局 JavaScript 對象。當服務器處理了這個 payload 後,應用的行為發生了改變。講者重新加載頁面並發送請求,系統終於認可了變數已被設置,返回了成功訊息並授予了 flag。有趣的是,由於原型已被全局污染,即使重置遊戲狀態,每次都會自動獲得 flag。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

Risky Bulletin: Russia starts blocking DoH and DoT
編輯精選
8 min
Web2 安全英文PODCAST8月26日

Risky Bulletin: Russia starts blocking DoH and DoT

Risky Business

  • 國家級網路管制層級提升:俄羅斯主動封鎖加密 DNS 協定對抗審查工具,中國加速淘汰 Windows 系統並遷移自主 Linux 發行版,各國正透過技術與法律手段強化網路主權與信息控制能力。
  • 詐騙犯罪走向精密化與自動化:從冒充警察的聲音詐騙(竊取 7.2 百萬美元)、AI 語音代理自動化破解 iPhone 啟用鎖、到跨越數百網站的投資詐騙(詐騙 7400 萬美元),犯罪組織正利用自動化工具與 AI 技術大幅降低成本並擴大規模。
  • AI 惡意軟體威脅實際上被嚴重誇大:405 個整合 AI 的惡意軟體樣本中僅 12 個於真實感染被偵測,其餘來自測試環境,證明當前 AI 惡意軟體仍停留於實驗階段,尚未構成主流威脅。
SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;
5 min
Web2 安全英文PODCAST8月26日

SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;

SANS Stormcast

  • SSRF 攻擊者已進化出高級繞過手段,不直接使用元數據服務 IP(169.254.169.254),而改用專門域名服務將請求轉址,支援點或破折號分隔 IP,甚至可自部署 DNS 伺服器進行 DNS 重綁定攻擊,使傳統簡易過濾機制失效。
  • 本地 AI 模型並非完全隱私:微軟 Paint 雖在本地執行生成邏輯,但安全檢查需上傳提示文字至遠程伺服器,返回時圖像內嵌不易移除的伺服器 GUID 隱形浮水印,可見浮水印(Copilot 圖標)則易被移除。
  • 傳統 FTP 協議被新型惡意軟體重新利用為命令控制通道,透過 FTP banner 傳遞指令於連接埠 21,防守者應視任何出站 FTP 流量為異常信號。
SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。