upload-labs通關攻略(1-11關)

清茶先生發表於2021-11-05

upload-labs通關攻略

upload-labs是練習檔案上傳很好的一個靶場,建議把upload-labs關卡全部練習一遍

1.下載安裝

下載地址

連結:https://pan.baidu.com/s/18a5JcD9IifW_Pwc5_bkRsA  提取碼:jhks

安裝

直接把他放在phpstudy的WWW目錄中。(phpstudy的下載安裝,可以自行百度一下)

開啟

訪問地址:127.0.0.1/upload-labs

問題

這裡可能會遇到一個問題,burpsuite會抓不到包。這時我們只需把127.0.0.1改為本機IPv4的地址。檢視本機IPv的方法:開啟cmd,輸入ipconfig.這樣就可以正常抓包了

接下來就可以打靶了。

第一關

第一關通過右鍵檢視原始碼或者提示,我們不難發現是一個前端驗證,一般前端驗證都是紙老虎,形同虛設。

所以第一關的通關方法有三種:

第一就是將瀏覽器js程式碼禁用掉,右鍵---檢查---偵錯程式---設定---禁用JavaScript。快捷方式:f12---f1就可以了

然後就可以上傳了。

這種方法有缺陷,因為禁用了js程式碼,如果在實戰中,網站的一些正常功能可能無法顯示。當然打靶通關是可以的。

第二種方法是用bp抓包工具直接將改字尾名

如果js程式碼是在本地執行,很可能抓不到資料包。這種方法也是不太行,同樣通過第一關是可以的。

第三種方法是將網站原始碼複製下來,放到本地,然後將js程式碼刪除。

右鍵---檢視網站原始碼---全部複製---建立一個記事本---將程式碼放進去---把記事本字尾名改為.html---用Notepad開啟---找到js程式碼---刪除

如果我們開啟,是有上傳檔案的介面,但是不知道要上傳給誰。這時我們返回到最開始,右鍵---檢查---網路---然後上傳一個正常的圖片。這樣我們就可以看到這個檔案傳給誰了。

然後我們在用Notepad開啟我們自己的html檔案,修改action,這個action是告訴他這個圖片提交給誰,因為這個原始碼中沒有,我們就自己加一個。

最後用瀏覽器開啟我們的html檔案,上傳。php檔案即可。建議學會用第三種方法,在實戰中,可能會遇到很多限制條件,第三種方法才是最完美的。

第二關

根據原始碼我們可以發現,這一關是常見驗證中的檔案型別驗證,也就是驗證MIME資訊

所以進行抓包,將Content-Type修改為允許上傳的型別(image/jpeg、image/png、image/gif)三選一。

檢視回顯,發現已經上傳成功

訪問一下

第二關完美通關

第三關

檢視原始碼,我們可以發現是一個黑名單驗證

上一篇講過黑名單是規定不允許上傳的檔案,但是如果黑名單定義不完整的話是可以實現繞過的,用.phtml .phps .php5 .pht進行繞過。這裡我們直接上傳一個.php5檔案

上傳成功,訪問看一下

因為上傳上去的檔名會改變,但是在資料包中有回顯(實戰中可能沒有),所以我們還是可以訪問的。

第三關就完美通過了

注意

要在apache的httpd.conf中有如下配置程式碼:AddType application/x-httpd-php .php .phtml .phps .php5 .pht,如果不配置他是無法解析php5程式碼的,訪問的時候就是一個空白頁

配置過程:以phpstudy2018版本為例
1.開啟其他選項單

2.開啟配置檔案---開啟httpd.conf

3.修改程式碼,去掉註釋符#

4.儲存,重啟phpstudy就可以了

第四關

這一關我們可以看到禁止上傳檔案可太多了

這種情況,我們可以嘗試上傳一個.htaccess配置檔案,將4.png圖片當作php程式碼進行解析,首先建立一個.htaccess檔案,裡面寫上程式碼
<FilesMatch "4.png">
SetHandler application/x-httpd-php

這串程式碼的意思是如果檔案中有一個4.png的檔案,他就會被解析為.php,把這個檔案上傳上去。
上傳上去之後,我們在把圖片用Notepad開啟,裡面寫上php程式碼。再進行上傳。
最後我們訪問這個4.png檔案

第四關就完美通過了

注意

.htaccess檔案不能起名字,他就是.htaccess檔案,如果你將他改為4.htaccess或者其他的什麼名字是不可以的,無法解析。在實戰中有可能上傳上去這個檔案會被自動重新命名,被重新命名了就不可以了。

如果以上操作都弄好了,還是出不來,還是去改phpstudy配置檔案,其他選項選單--開啟配置檔案---httpd.conf

箭頭指向位置一開始none,改為all儲存,重啟phpstudy,就可以了。

第五關

第五關其實是有些upload-labs的第九關,我也認為把這關放到第九關比較合適。如果你的第五關和我的不一樣,那麼我的第六關就是你的第五關,依次類推到第九關。

這一關的思路是它沒有迴圈驗證,也就是說這些收尾去空,刪除末尾的點,去除字串::$DATA,轉換為小寫這些東西只是驗證了一次。所以我們的繞過思路就很簡單,在資料包中把字尾名改為.php. .說一下他的驗證過程,首先他發現有一個點,這時會把他去掉,又發現有一個空格,也會把它去掉,我們這時還有一個點,也就是.php. 由於他只是驗證一次,所以不會在去掉我們的點,這時就可以上傳成功,也可以解析成功。如下圖:

上傳成功,然後訪問

第五關完美通關

第六關

看第六關的程式碼我們知道,這一關沒有強制將大寫轉換為小寫,所以我們可以上傳純大寫或者大小寫結合的字尾名

但是要注意不要和限制上傳的檔案字尾名寫重複了。
直接上傳一個字尾名為.PHP的檔案

我們可以看到上傳成功,訪問

第六關就完美通關了。

第七關

直接看程式碼,發現沒有收尾去空。上傳php檔案,抓包在後面加空格。

然後我們可以發現上傳成功,訪問

第七關闖關成功

第八關

第八關我們可以發現沒有刪除檔名末尾的點,和第七關思路一樣,就是把空格換成點

然後我們可以發現上傳成功,訪問

第八關闖關成功

第九關

第九關檢視程式碼發現沒有去除字串::$DATA(關於什麼是::$DATA參考上一篇文章),和第七八關一樣,直接上傳,在資料包的php後面直接加上::$DATA

然後我們可以發現上傳成功,訪問

第九關闖關成功

第十關

第十關和第五關一樣,第五關怎麼玩,第十關就怎麼玩。(好像第五關和第十關重複了,接下來的十一關有可能是你們的第十關,如果你們的upload-labs和我的一樣就正常看)

第十一關

第十一關也是黑名單的繞過,他的意思是如果你上傳了上面規定的檔案,他就會把你的字尾名去掉,比如你上傳了11.php,那麼他就會把你的php過濾掉。檔案沒有了字尾名,自然也就無法解析了。但是他是一次過濾,也就是說我們寫兩個php就可以了:10.pphphp,他過濾掉一個,正好剩下了11.php。如下圖所示:

上傳成功,然後訪問

十一關通關

總結

這些全部為黑名單繞過,而且只是驗證一次,所以這些關卡全部可以用一個思路解出來,那就是.php. . 都是可以這樣的,但是這就違背了建立靶場者的心思,靶場也就失去了意義,發揮不出靶場真正的作用。大家知道有這麼一回事就可以了。所以大家還是按照本篇老老實實打一遍,通關不是目的,讓知識得到鞏固才是目的。

相關文章