文章目錄
-
- 白名單的繞過處理方法
-
- 白名單繞過 upload-labs-Pass-02 [修改MIME檔案類型]
- 白名單繞過 upload-labs-Pass-12 [%00截斷]
白名單的繞過處理方法
采用字尾名的繞過方法 如
MIME修改、%00截斷、0x00截斷
白名單繞過 upload-labs-Pass-02 [修改MIME檔案類型]
MIME檢測并不是檢測字尾名,是檢測檔案類型,雖然不檢測字尾名,但是屬于白名單機制。
先分析一下 upload-labs-Pass-02 的源碼
白名單繞過 upload-labs-Pass-12 [%00截斷]
這裡有個點要說一下, upload-labs-Pass-12 與 upload-labs-Pass-11 同樣都可以使用 %00 截斷的方式繞過,差別在于 upload-labs-Pass-11 是通過 $_GET 擷取圖檔存儲路徑,而 upload-labs-Pass-12 是通過 $_POST 方式擷取圖檔存儲路徑的。
利用 $_POST 擷取圖檔存儲路徑時使用的 %00 截斷是無法正常解析的需要重新進行URL編碼。
[這裡有個大坑]
在upload後面加上12.php+(添加+是為了友善改hex值)
通過 burpsuite 修改 hex 值為 00 進行截斷。
把 2b(’+'的 hex) 修改成 00
或者直接在upload後面加上12.php%00,然後選中%00實施URL-decode
關于這裡的坑需要說一下, %00 截斷這個方法僅适用于小于 PHP 5.2.4 的版本,且 php.ini 中 magic_quotes_gpc=off 的狀态下才适用。而我從docker上下載下傳的鏡像檔案的版本是 5.2.17 版本的還是安裝在Ubantu系統下,是以11關與12關無法利用 %00 突破。如果是WIN系統環境利用PHP study 安裝的綠色版的 upload-labs ,通過降低 PHP版本就可以使用 %00、 0x00 截斷的方式突破上傳。
upload-labs 官方Git位址 https://github.com/c0ny1/upload-labs
[真尼瑪坑]