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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BUUCTF--练习场-- basic--上传文件漏洞经典靶场upload-labs-- Pass1-3(Pass4简单尝试)

發布時間:2023/12/19 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BUUCTF--练习场-- basic--上传文件漏洞经典靶场upload-labs-- Pass1-3(Pass4简单尝试) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件上傳功能非常常見,上傳圖片、視頻,論壇發送帶上附件,郵件發送帶上附件等場景


BUUCTF–練習場-- basic–上傳文件漏洞經典靶場upload-labs

Pass-1


先嘗試上傳一張正常的照片:

上傳成功:

右鍵,查看圖像,得到上傳成功的地址:
http://07b2a810-8fe2-406b-b1d0-6bce30a755ae.node4.buuoj.cn:81/upload/Chrysanthemum.jpg
然后嘗試上傳木馬:
根據簡介中提到的:

upload-labs是一個使用php語言編寫的,專門收集滲透測試和CTF中遇到的各種上傳漏洞的靶場。旨在幫助大家對上傳漏洞有一個全面的了解。目前一共20關,每一關都包含著不同上傳方式。

所以上傳PHP的免殺一句話木馬:
點擊“上傳”,竟然提示:

該文件不允許上傳,請上傳.jpg|.png|.gif類型的文件,當前文件類型為:.php

嘗試開啟burp進行抓包:
發現burp什么包都沒有抓到,依舊彈出:

該文件不允許上傳,請上傳.jpg|.png|.gif類型的文件,當前文件類型為:.php

判斷,這是前端的檢驗
看javascript源碼:

function checkFile() {var file = document.getElementsByName('upload_file')[0].value;if (file == null || file == "") {alert("請選擇要上傳的文件!");return false;}//定義允許上傳的文件類型var allow_ext = ".jpg|.png|.gif";//提取上傳文件的類型var ext_name = file.substring(file.lastIndexOf("."));//判斷上傳文件類型是否允許上傳if (allow_ext.indexOf(ext_name + "|") == -1) {var errMsg = "該文件不允許上傳,請上傳" + allow_ext + "類型的文件,當前文件類型為:" + ext_name;alert(errMsg);return false;} }

允許上傳的文件類型是:.jpg|.png|.gif
所以上傳PHP木馬會失敗

解決:繞過前端(非常簡單)
找到觸發校驗的地方:

刪去改JS方法,然后訪問:

校驗,發現成功獲取webshell:

通過蟻劍連接:

再看Pass-2

直接上手—傳木馬:
跟剛才的提示不一樣,這一次不是彈窗:

估計走的后端校驗,嘗試抓包:
果然:

cmd+r,給Repeater:
直接go一下,果然是:

<div id="msg">提示:文件類型不正確,請重新上傳! </div><div id="img"></div>

修改content- type,并加上圖片頭:

Content-Type: image/jpeg

GIF89a

<?php ......

(為了防止和第一題的有不同,修改為sqzr2.php)

Go一下:
成功上傳:

直接根目錄加上/upload/sqzr2.php 訪問:

連接蟻劍:

回顧,看看源碼:(PHP,后端檢驗)

$is_upload = false; $msg = null; if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name'] if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上傳出錯!';}} else {$msg = '文件類型不正確,請重新上傳!';}} else {$msg = UPLOAD_PATH.'文件夾不存在,請手工創建!';} }

其實就是檢驗的content- type,也沒有檢驗上傳文件的后綴。

Pass-3:

先嘗試上傳木馬:

burp抓包改后綴:

Content-Disposition: form-data; name="upload_file"; filename="sqzr3.php3" Content-Type: application/octet-streamGIF89a <?php

go一下成功:

放包直接訪問:

http://07b2a810-8fe2-406b-b1d0-6bce30a755ae.node4.buuoj.cn:81/upload/202201290656555488.php3

成功:


連接蟻劍:


回顧,看一下關鍵的源碼:

$is_upload = false; $msg = null; if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array('.asp','.aspx','.php','.jsp');$file_name = trim($_FILES['upload_file']['name']);$file_name = deldot($file_name);//刪除文件名末尾的點$file_ext = strrchr($file_name, '.');$file_ext = strtolower($file_ext); //轉換為小寫$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //收尾去空if(!in_array($file_ext, $deny_ext)) {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext; if (move_uploaded_file($temp_file,$img_path)) {$is_upload = true;} else {$msg = '上傳出錯!';}} else {$msg = '不允許上傳.asp,.aspx,.php,.jsp后綴文件!';}} else {$msg = UPLOAD_PATH . '文件夾不存在,請手工創建!';} }

Pass-4

先嘗試上傳一個木馬,


只是提示 此文件不允許上傳 也沒有別的提示,嘗試抓包,改

Content-Disposition: form-data; name="upload_file"; filename="sqzr.php3" Content-Type: image/jpegGIF89a <?php

Go了,還是不允許上傳,看一波提示:

提 示本pass禁止上傳.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf后綴文件!

試試PHP9:

Content-Disposition: form-data; name="upload_file"; filename="sqzr4.php9" Content-Type: image/jpegGIF89a <?php

居然成功:

訪問:

http://07b2a810-8fe2-406b-b1d0-6bce30a755ae.node4.buuoj.cn:81/upload/sqzr4.php9

如果直接連接蟻劍,發現不行,又遇到問題了

最后嘗試利用 .htaccess文件解決:

先上傳這個.htaccess文件:

總結

以上是生活随笔為你收集整理的BUUCTF--练习场-- basic--上传文件漏洞经典靶场upload-labs-- Pass1-3(Pass4简单尝试)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。