日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

upload通关手册

發(fā)布時(shí)間:2024/5/24 综合教程 43 生活家
生活随笔 收集整理的這篇文章主要介紹了 upload通关手册 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

upload-labs通關(guān)

0x00 前言

這段時(shí)間一直在忙,沒時(shí)間來更新文章,這里就寫篇upload-labs的通關(guān)手冊吧,現(xiàn)在包括網(wǎng)上也有很多upload通關(guān)手冊,但是在這里還是想自己去寫一篇,來做個(gè)自我總結(jié)。在做靶場當(dāng)中也參考了網(wǎng)上的文章。

0x01 pass-01-10

第一關(guān)

來到第一關(guān)卡,選擇,把burp開啟抓包。點(diǎn)擊上傳會(huì)發(fā)現(xiàn),直接就彈框不允許上傳了。

那么基本可以判斷這是個(gè)前端校驗(yàn)的。此時(shí)有三種辦法,

(1)、審查元素刪除過濾函數(shù)

(2)、直接禁用js

(3)、先上傳jpg文件然后抓包重命名

這里就直接來禁用js文件繞過。

上傳成功。

第二關(guān)

查看源代碼

$_FILES["file"]["name"] - 上傳文件的名稱
$_FILES["file"]["type"] - 上傳文件的類型
$_FILES["file"]["size"] - 上傳文件的大小,以字節(jié)計(jì)
$_FILES["file"]["tmp_name"] - 存儲(chǔ)在服務(wù)器的文件的臨時(shí)副本的名稱
$_FILES["file"]["error"] - 由文件上傳導(dǎo)致的錯(cuò)誤代碼

這里獲取了上傳文件的類型,如果類型等于image/jpeg、image/png、image/gif就可以上傳成功。

可以直接修改mime類型來繞過。

burp抓包,修改content-type的類型為image/gif

成功繞過。

第三關(guān)

file_exists() 函數(shù)檢查文件或目錄是否存在。

trim() :函數(shù)移除字符串兩側(cè)的空白字符或其他預(yù)定義字符。

deldot():移除末尾的點(diǎn)

strrchr() 函數(shù)查找字符在指定字符串中從后面開始的第一次出現(xiàn)的位置,如果成功,則返回從該位置到字符串結(jié)尾的所有字符,如果失敗,則返回 false。與之相對(duì)應(yīng)的是strstr()函數(shù),它查找字符串中首次出現(xiàn)指定字符的位置

strtolower:轉(zhuǎn)化為小寫

這里定義了一個(gè)數(shù)組,黑名單的數(shù)組,并且去除了末尾的點(diǎn)和空格、::$data等字符,且匹配了后綴名。

這里還可以使用到一些過濾不全去繞過,上傳php3或者是phtml一樣能被當(dāng)做php來識(shí)別,當(dāng)然這個(gè)得看apache的解析設(shè)置。

抓包改名為php3,點(diǎn)擊forword

上傳成功,成功被識(shí)別。

第四關(guān)

由于后面的關(guān)卡和前面的代碼大致一樣就不一一解釋了。

第四關(guān)卡把能禁用的都給禁用掉了,但是唯獨(dú)沒有禁用掉.htaccess 文件我們可以上傳.htaccess文件,然后再去上傳圖片馬。

.htacess 內(nèi)容如下:

SetHandler application/x-httpd-php

成功繞過上傳限制。

第五關(guān)

這里比上一關(guān)少了一個(gè)轉(zhuǎn)換成小寫,我們就可以利用到大小寫去對(duì)他進(jìn)行繞過。

windwos對(duì)大小寫不敏感,無論大小寫都能識(shí)別,而linux則相反。

上傳成功,下一關(guān)

第六關(guān)

這一關(guān)和前面的都差不多,去除了點(diǎn)號(hào)和::$data 但是缺少去除空格的函數(shù)。

我們可以加個(gè)空格來繞過他的限制,在windows里面后綴的空格會(huì)自動(dòng)過濾掉。

這里后綴后面加了個(gè)空格,成功繞過

第七關(guān)

這里沒有去除后綴后面的點(diǎn),我們可以利用到windows 后綴加點(diǎn)號(hào)自動(dòng)過濾掉的這個(gè)特性來繞過限制。

成功繞過。

第八關(guān)

代碼里面去除了點(diǎn)號(hào)空格,但是這關(guān)確漏掉了::$data,我們就可以利用到windwos文件流特性去繞過文件上傳限制。利用的是NTFS文件系統(tǒng)的一個(gè)特性,NTFS存儲(chǔ)數(shù)據(jù)流的一個(gè)屬性,當(dāng)我們這樣去訪問的時(shí)候,其實(shí)我們請求的,它就會(huì)被認(rèn)為是phpinfo.php本身的數(shù)據(jù)

上傳完成后,去除::$data 直接訪問xx.php文件解析成功

第九關(guān)

第九關(guān)這個(gè)地方去除去除了大部分的東西,前面用到的點(diǎn)號(hào)和空格都被過濾了,但是這里還是有辦法繞過去,我們可以多加幾個(gè)空格和點(diǎn) ,代碼里面的只過濾一次。

添加完成后發(fā)包過去就可以看到上傳成功。

訪問,解析成功。

第十關(guān)

在第十關(guān)代碼和前面的不大一樣,我們來審計(jì)一下代碼

這里定義了一個(gè)array數(shù)組,黑名單的數(shù)組,如果匹配到接收過來的后綴等于定義數(shù)組里面的內(nèi)容就替換為空。

代碼如下:

 $file_name = str_ireplace($deny_ext,"", $file_name);

str_ireplace 是個(gè)替換的函數(shù)

我們嘗試直接上傳個(gè)phpinfo 。

這里能直接上傳成功,但是后綴被替換為空了,因?yàn)檫@些代碼都是只過濾一次,我們可以使用到雙寫來繞過。

第十一關(guān)

這里的代碼寫的是白名單,只允許上傳jpg等圖片格式的文件,在我們前面用到的黑名單都不能使用了。

但是我們還可以利用到00截?cái)鄟韺?duì)他進(jìn)行繞過。

在url中%00表示ascll碼中的0 ,而ascii中0作為特殊字符保留,表示字符串結(jié)束,所以當(dāng)url中出現(xiàn)%00時(shí)就會(huì)認(rèn)為讀取已結(jié)束。

使用burp抓包后,發(fā)現(xiàn)他的目錄是可控的,我們可以直接從目錄那里對(duì)他進(jìn)行截?cái)?/p>

發(fā)送 訪問

這里會(huì)訪問失敗,把php后面的東西去掉,再次訪問。

第十二關(guān)

第十二關(guān)也是一樣的白名單,先來抓個(gè)包看看

這里發(fā)現(xiàn)和前面不一樣的地方,就是剛剛的路徑是在url里面的,而這一個(gè)關(guān)卡的是在post包里面。

那么需要00截?cái)嘈枰獯a,因?yàn)樵趗rl里面?zhèn)鲄?huì)自動(dòng)解碼而post里面不會(huì)。

發(fā)送

第十三關(guān)

這里的代碼定義個(gè)函數(shù)打開我們上傳的文件并且讀取我們的前面2位數(shù)。

這時(shí)候我們改文件后綴是沒用的,一樣上傳不了,可以直接加上gif89a或者是直接制作圖片馬。

copy 1.jpg/b+phpinfo.php/a 3.jpg

制作完成,直接上傳,然后還需要配合文件包含來解析。

圖片馬上傳成功,打開解析漏洞的頁面包含這張圖片。

成功執(zhí)行。第十四關(guān)也是一樣的可以上傳成功,都是判斷了圖片的完整性

第十五關(guān)

這里使用的

exif_imagetype() 讀取一個(gè)圖像的第一個(gè)字節(jié)并檢查其簽名。

定義有以下常量,并代表了 exif_imagetype() 可能的返回值:

1	IMAGETYPE_GIF
2	IMAGETYPE_JPEG
3	IMAGETYPE_PNG 

上傳圖片馬,配合文件包含漏洞,成功解析

這幾關(guān)里面,唯一不同的就是驗(yàn)證圖片的方式和函數(shù)不一樣。

第十六關(guān)

這里的驗(yàn)證比前面的多了不是,獲取了名字和mime類型,

然后進(jìn)行校驗(yàn),驗(yàn)證完成后才進(jìn)行二次渲染

第十六關(guān),使用了gd庫對(duì)圖片做了二次渲染。

那么我們先來上傳一個(gè)普通的圖片馬看看。

上傳完成后使用包含,報(bào)錯(cuò)了。

我們來下載這張圖片然后對(duì)他進(jìn)行查看。

用010editot打開發(fā)現(xiàn)我們后面加上的phpinfo();已經(jīng)被刷掉了。

那么我們可以使用16進(jìn)制對(duì)比工具來看 原圖和渲染后的圖,哪個(gè)地方?jīng)]用被gd給處理過,從gd庫沒處理的地方插入paylaod。

顯示藍(lán)色的是未被gd庫未被渲染的地方

關(guān)于二次渲染可以參考先知論壇大佬的文章,很詳細(xì)。

https://xz.aliyun.com/t/2657

第十七關(guān)

move_uploaded_file() 函數(shù)將上傳的文件移動(dòng)到新位置。
若成功,則返回 true,否則返回 false。
rename() 函數(shù)重命名文件或目錄。

這里先是把文件用move_uploaded_file()函數(shù)移動(dòng)到了上傳的目錄下面,如果不是白名單,再使用unlink函數(shù)將文件刪除。

那么我們可以上傳寫入木馬的代碼

<?php fputs(fopen("shell.php", "w"), '<?php @eval($_POST["shell"]) ?>'); ?>

截取上傳數(shù)據(jù)包,發(fā)送到intrude模塊,持續(xù)發(fā)送,另外開一個(gè)持續(xù)訪問上傳的目錄。

等到響應(yīng)200 的時(shí)候木馬就寫入成功了。

然后瀏覽器訪問shell.php

訪問成功,這時(shí)候就可以拿一句話去連接了

這里的條件競爭條件是文件未被重命名。

0x02 結(jié)尾

這里就把大致的方法都總結(jié)了一遍,當(dāng)然還確實(shí)了一些各種的解析漏洞和文件包含的東西,都會(huì)配合到文件上傳漏洞來使用,在一些cms爆出后臺(tái)getshell漏洞時(shí)候也可以getshell ,比如配置插馬,備份數(shù)據(jù)庫拿shelll 。

總結(jié)

以上是生活随笔為你收集整理的upload通关手册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。