本文僅用于技術研究,禁止用于非法用途。
Author:枷鎖
點開題目顯示一個圖片,沒有任何交互功能,我們直接查看網頁源代碼
我們可以看到有一個歆慕的注釋source.php,我們進行拼接,訪問一下這個文件
在url后加上/source.php進行訪問,可以看到我們訪問到一些源碼
訪問后得到以下關鍵PHP代碼:
highlight_file(__FILE__);
class emmm {public static function checkFile(&$page) {$whitelist = ["source"=>"source.php","hint"=>"hint.php"];// ...檢查邏輯...}
}if (!empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;
} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
- 文件包含條件:
$_REQUEST['file']
不為空$_REQUEST['file']
是字符串類型- 通過
emmm::checkFile()
檢查 - 只有讓這三個都是true才能進入include,從而文件包含出flag文件。前兩個只要file不為空且是字符串類型即可為true。重點是第三個判斷。
- checkFile函數邏輯:
- 定義白名單:
source.php
和hint.php
- 檢查輸入是否在白名單中
- 對輸入進行URL解碼和字符串截取處理
- 多層檢查機制增加了繞過難度
- 可利用點:
- 白名單檢查可通過路徑遍歷繞過
- URL解碼特性可被利用
include
函數對路徑的特殊處理方式
解題步驟
第一步:獲取提示信息
訪問hint.php
獲取提示:
?file=hint.php
返回提示可能存在ffffllllaaaagggg
文件
第二步:構造payload繞過檢查
-
基本payload結構:
file=hint.php?/../../../../../ffffllllaaaagggg
- 利用
?
截斷使hint.php
通過白名單檢查 - 使用路徑遍歷訪問目標文件
- 利用
-
URL編碼處理:
由于服務器會自動進行URL解碼,需要構造多層編碼:file=hint.php%253F/../../../../../ffffllllaaaagggg
或
file=hint.php%3F%2F..%2F..%2F..%2F..%2F..%2Fffffllllaaaagggg
第三步:理解include機制
路徑解析特性:
- PHP的
include
會嘗試解析/
分隔的路徑 - 如果前半部分文件不存在,會嘗試包含后半部分路徑
- 路徑遍歷深度足夠時能訪問到目標文件
技術要點總結
- 文件包含漏洞利用:
- 通過白名單繞過實現任意文件包含
- 結合路徑遍歷訪問敏感文件
- URL編碼特性:
- 服務器自動解碼機制
- 多層編碼繞過技巧
- PHP include特性:
- 路徑解析的特殊處理
- 相對路徑的計算方式
最終解決方案
最有效的payload為:
?file=hint.php%253F/../../../../../ffffllllaaaagggg
這個payload能夠:
- 通過白名單檢查(解碼后為
hint.php?
) - 利用路徑遍歷訪問目標文件
- 適應服務器的自動解碼機制
宇宙級免責聲明??
🚨 重要聲明:本文僅供合法授權下的安全研究與教育目的!🚨
1.合法授權:本文所述技術僅適用于已獲得明確書面授權的目標或自己的靶場內系統。未經授權的滲透測試、漏洞掃描或暴力破解行為均屬違法,可能導致法律后果(包括但不限于刑事指控、民事訴訟及巨額賠償)。
2.道德約束:黑客精神的核心是建設而非破壞。請確保你的行為符合道德規范,僅用于提升系統安全性,而非惡意入侵、數據竊取或服務干擾。
3.風險自擔:使用本文所述工具和技術時,你需自行承擔所有風險。作者及發布平臺不對任何濫用、誤用或由此引發的法律問題負責。
4.合規性:確保你的測試符合當地及國際法律法規(如《計算機欺詐與濫用法案》(CFAA)、《通用數據保護條例》(GDPR)等)。必要時,咨詢法律顧問。
5.最小影響原則:測試過程中應避免對目標系統造成破壞或服務中斷。建議在非生產環境或沙箱環境中進行演練。
6.數據保護:不得訪問、存儲或泄露任何未授權的用戶數據。如意外獲取敏感信息,應立即報告相關方并刪除。
7.免責范圍:作者、平臺及關聯方明確拒絕承擔因讀者行為導致的任何直接、間接、附帶或懲罰性損害責任。
🔐 安全研究的正確姿勢:
? 先授權,再測試
? 只針對自己擁有或有權測試的系統
? 發現漏洞后,及時報告并協助修復
? 尊重隱私,不越界
?? 警告:技術無善惡,人心有黑白。請明智選擇你的道路。
希望這個教程對你有所幫助!記得負責任地進行安全測試。