Upload-labs靶場通關

之前搭好了靶場,Upload-labs 靶場搭建 及一句話木馬的原理與運用-CSDN博客

今天開始通關并寫詳細流程

Pass-1

來到靶場的第一關

先隨便上傳php 代碼

點擊上傳

發現文件類型被限制了

方法1:

改文件后綴為合法文件(.jpg .png .gif),再抓包修改回php文件

例如我將它改為.jpg

改完后打開bp抓包,然后點擊上傳

抓到包后修改文件后綴 .jpg為.php

改為

?然后發送,回到上傳頁面,因為木馬已經經過前端驗證又改為php文件,所以木馬被執行

右鍵上傳成功的圖片,新標簽頁打開

其實這里剛開始我上傳的一句話木馬是<?php @eval($_POST['a']);?>

但上傳打開圖片鏈接就出現服務器錯誤,無法顯示上傳的文件

這里說一下為什么要先改后綴再上傳抓包改后綴

因為文件上傳以后數據包是從客戶端發往服務端,而bp抓包是相當于在服務端抓,js前端驗證是在客戶端進行的,這樣一來因為這題是js前端驗證,木馬文件要先進行js前端驗證才能進行抓包,而.php文件后綴是被js禁止上傳的,也就是說該木馬文件連第一步前端驗證都沒通過,抓包是抓不了的。(所以要先改為jpg后綴繞過js前端驗證,再進行抓包改為php就能上傳木馬成功)

后來在別處得知運用到<?php phpinfo();?>

<?php phpinfo();?> 是一段簡單的 PHP 代碼,用于顯示當前服務器的 PHP 配置信息

<?php ... ?>PHP 的起始和結束標簽,包裹其中的 PHP 代碼。

phpinfo();PHP 內置函數調用后會生成一個完整的 HTML 頁面,包含服務器的 PHP 環境信息

顯示 PHP 配置
包括:

PHP 版本、運行模式(如 CLI 或 Apache 模塊)。

編譯選項(如支持的擴展、安全設置)。

服務器環境變量(如 $_SERVER 內容)。

已加載的擴展(如 MySQL、GD 庫等)。

php.ini 的配置參數(如內存限制、上傳文件大小等)

調試用途
開發時常用它檢查服務器是否正常加載了特定擴展(如 curlpdo_mysql),或確認配置(如 error_reporting)是否生效

如果想限制顯示的信息,可以用參數:

<?php phpinfo(INFO_MODULES); // 僅顯示已加載的擴展 ?>

與一句話木馬的區別

核心區別對比表

特性phpinfo()一句話木馬
主要功能顯示服務器配置信息提供遠程代碼執行能力
危險性低(信息泄露)極高(系統控制)
典型用途調試/信息收集權限維持/滲透
代碼復雜度單函數調用常含加密/混淆邏輯
檢測難度通常被允許安全軟件會重點監控
 

方法2:

可以F12鍵打開查看器可以看到前端驗證的代碼

這里其實禁用前端就可以了 (既然Javascript過濾了文件,那把Javascript禁用了就沒辦法過濾,也就可以上傳了 )

打開設置里的調試程序,勾選禁用Javascript

這個是把前端所有的js函數都禁用了(為了瀏覽器以后能正常使用,要記得過關以后把Javascript開啟)

Pass-2

這題同樣先上傳文件看看

發現提示文件類型不正確,那就是改Content-type就可以

同樣選擇文件后抓包上傳

然后改文件類型,把改為image/jpeg試試

上傳成功打開圖片

Pass-3

這題上傳了php文件后發現是黑名單驗證,禁止上傳四種后綴的名單

現在想辦法繞過,在網上查了一下后了解到在某些特定的環境中某些特殊后綴會被當做php文件解析php、php2、php3 4 5 6 7以及pht、phtm、phtml,然后用php5試了一下,先將之前的<?php phpinfo();?>文件名改一下

上傳后同樣復制圖片地址,然后另建訪問,但發現是空白頁

弄了好一會不知道怎么回事,后來在一個博主那里了解到使用phpstudy搭建的upload-labs可能無法加載出這個界面,我的就是,而他給出的方法是修改#AddType application/x-httpd-php .php .phtml為AddType application/x-httpd-php .php .phtml .php5 .php3,然后別忘了#要刪除,然后就可以正常訪問圖片地址

我按他說的試了一下,先打開phpstudy的配置文件下的httpd-conf配置文件

然后修改

保存過后就可以訪問圖片路徑

Pass-4

這題著實不會,因為過濾了太多文件

乍一看還好,往后一看更多

這里參照了別人的博客,利用.htaccess,可以重寫文件解析繞過,大概做法如下

先寫一個文件命名為.htaccess,這個文件內容的意思是告訴apache遇到jpg文件時按照php去解析

再創建一個php測試文件

最后分別將.htaccess 和xxx.jpg文件上傳,然后用瀏覽器訪問xxx.jpg即可

Pass-5

查看源碼,發現過濾了更多后綴,這次連.htaccess文件也被過濾了

但看到源碼中過濾數組有小寫和大小寫混合,但沒有純大寫,而下面也沒有轉小寫

因為php文件名是不區分大小寫的,所以直接上傳

Pass-6

這題先上傳上一題的文件,發現果然被過濾

然后查看源碼,發現過濾這塊有點不一樣,這題相比上一題沒有trim()函數對文件名進行去空格處理

而關于文件上傳的題之前在deepseek上了解到 在windows環境下,系統會自動去除文件名后面的點和空格,而在linux環境下,會保留文件名的特殊字符,我的環境在windows搭建成的,所以就好解決了? 方法就是抓包添加空格,進而消耗掉過濾數,然后windows就會幫我刪掉空格,那么完成

先上傳剛剛的文件,然后抓包添加空格放行即可

Pass-7

查看關卡源碼,對比第四關,發現少了刪除文件末尾的點

第六關一樣,windows文件后綴名不能加’.',一樣使用burp抓包然后后綴加一個點

Pass-8

查看源碼,發現相比之前的代碼少了刪除文件末尾的點

所以同樣上傳之前的php文件,windows文件后綴名不能加. 所以進行bp抓包 ,然后在后綴加.

最后放行即可

Pass-9

首先查看源碼發現這題少了去除字符串::$DATA

所以直接使用bp抓包在文件名后綴加::$DATA,最后放行

Pass-10

這一題之前的所有方法都用不了了,但需要注意的是,沒有循環驗證,代碼只執行一次

既然這樣先雙寫試試看,然后抓包發現的確是將一個php去掉以后拼接了一個新的php

最后放行復制鏈接訪問解析即可

Pass-11

這題注意到save_path這個可控變量,后面還有一個后綴名需要繞過

這里需要知道%00截斷但要注意使用這個有兩個條件

php版本小于5.3.4

php的magic_quotes_gpc為OFF狀態

然后解釋一下00截斷:php在處理文件名或路徑時,如果遇到URL編碼的%00,它會被解釋為一個空字節(即ASCLL值為0),在php5.3以前,php會將這個空字節轉換為\000的新式,然后就會導致文件名被截斷,只保留%00之前的部分,然后可能會導致文件被保存到另一個意外的位置從而產生安全風險(php語言的底層為c語言,\0在C語言中是字符串的結束符,所以導致00截斷的發生)

接下來注意到img_path是通過get傳參傳遞的,所以不妨將這個路徑改為upload/Untitled.php%00,則不管后面是什么東西都會被截掉,然后經過move_upload_file函數將臨時文件重新復制給截斷之前的文件路徑,但還是要上傳jpg文件以保證后續程序的運行

接下來就是上傳 抓包 修改 放行

Pass-12

這一題發現和上一題不一樣,上一題是get傳參,這一題是post傳參

上一關%00經過url編碼,而post不會自行編碼,所以應該要對%00進行urldecode編碼,可直接利用bp中的快捷鍵convert selection進行快速url編碼

然后我上傳的文件類型不正確,Content-type也需要改一下,改為image/jpeg或image/png

改完后send即上傳成功

Pass-13

這題的圖片馬其實就是在一張圖片中寫入一句話改為php文件然后與另一張圖片合成新圖片,上傳該圖片利用php的文件包含特性將圖片以php進行解析

先將一張圖片寫入一句話

使用終端合成新圖片再上傳,最后利用文件包含漏洞讀取即可

copy liu.jpg /b + liu.php /a new.jpg

?當然我也使用了bp發現直接抓包加入一句話要方便得多

Pass-14

檢查源碼發現pass檢查圖標內容開頭2個字節

也不清楚能干嘛,就像之前一樣先找一張正常的圖片然后加入phpinfo

然后發現上傳成功

pass-15

這題看了源碼后看提示

然后注意到getimagesize()函數,具體解析在這里

php getimagesize 函數 – 獲取圖像信息 | 菜鳥教程

然后同樣上傳上一題的圖片馬即可

Pass-16

查看提示有重新渲染,先看看源碼

imagecreatefromjpeg()函數,二次渲染是由Gif文件或URL創建一個新圖像。成功則返回一圖像標識符/圖像資源,失敗則返回false,導致圖片馬的數據丟失,上傳圖片失敗。

按照前幾關的方式上傳,可以上傳,但是包含漏洞無法解析。原因就是二次渲染將圖片馬里面的php代碼刪除了。接下來把原圖和修改后的圖片進行比較,看那里沒有被渲染,在這里插入php代碼。這里使用beyond compare。

把上傳的圖片右鍵保存本地,看有沒有被渲染的地方,加入php代碼

再重新上傳

Pass-17

提示需要進行代碼審計,先看看源碼

發現如果上傳的符合它的白名單,那就進行重命名,如果不符合,直接刪除!解析的機會都沒有,這讓我想到了條件競爭,如果我在它刪除之前就訪問這個文件,他就不會刪除了。接下來直接實驗
上傳一個php文件,然后burp抓包發到爆破模塊

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75562.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75562.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75562.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[GN] Python3基本數據類型 -- 與C的差異

Python3 面向對象 文章目錄 Python3的基本數據類型6個標準的數據類型NumbersStringListtupleSetsDictionaries Python運算符邏輯 運算符成員運算符身份運算符 Python3 數字Python3 序列序列切片序列相加序列相乘序列相關內置函數 Python3 列表訪問列表的值更新列表刪除列表元素…

MCP over MQTT:EMQX 開啟物聯網 Agentic 時代

前言 隨著 DeepSeek 等大語言模型&#xff08;LLM&#xff09;的廣泛應用&#xff0c;如何找到合適的場景&#xff0c;并基于這些大模型構建服務于各行各業的智能體成為關鍵課題。在社區中&#xff0c;支持智能體開發的基礎設施和工具層出不窮&#xff0c;其中&#xff0c;Ant…

AI助力高效PPT制作:從內容生成到設計優化

隨著人工智能技術的不斷發展&#xff0c;AI在各個領域的應用日益普及&#xff0c;尤其是在文檔和演示文稿的創建過程中。PowerPoint&#xff08;PPT&#xff09;作為最常用的演示工具之一&#xff0c;借助AI的技術手段&#xff0c;可以極大地提高制作效率并提升最終呈現效果。在…

學透Spring Boot — 009. Spring Boot的四種 Http 客戶端

目錄 常見的HttpClient Spring 提供的HttpClient RestTemplate Spring 提供的模板類 XXXTemplate RestTemplate的使用 RestTemplate的使用技巧 RestTemplate的問題 RestClient RestClinet的基本使用 RestClient的自動配置 RestClient 序列化對象 異常處理 onStatus …

leetcode117 填充每個節點的下一個右側節點指針2

LeetCode 116 和 117 都是關于填充二叉樹節點的 next 指針的問題&#xff0c;但它們的區別在于 樹的類型 不同&#xff0c;117與 116 題類似&#xff0c;但給定的樹是 普通二叉樹&#xff08;不一定完全填充&#xff09;&#xff0c;即某些節點可能缺少左或右子節點。 樹的結構…

軟考系統架構師 — 4 嵌入式軟件

目錄 4.1 考點分析 4.2 嵌入式微處理器 4.2.1嵌入式微處理器體系結構 5.2.2 嵌入式微處理器分類 4.2.3 多核處理器 4.3 嵌入式軟件 4.4 嵌入式系統 4.4.1 嵌入式系統的組成 4.4.2 嵌入式系統分類 4.4.3 嵌入式數據庫系統DBMS 4.4.4 嵌入式操作系統OS 4.4.5 嵌入式實…

RocketMQ 中的 ProducerManager 組件剖析

一、引言 在分布式系統的消息傳遞領域&#xff0c;RocketMQ 以其高性能、高可用性和強大的擴展性脫穎而出。ProducerManager 作為 RocketMQ 中的一個關鍵組件&#xff0c;在消息生產環節發揮著至關重要的作用。它負責管理消息生產者&#xff08;Producer&#xff09;的生命周期…

k8s進階之路:本地集群環境搭建

概述 文章將帶領大家搭建一個 master 節點&#xff0c;兩個 node 節點的 k8s 集群&#xff0c;容器基于 docker&#xff0c;k8s 版本 v1.32。 一、系統安裝 安裝之前請大家使用虛擬機將 ubuntu24.04 系統安裝完畢&#xff0c;我是基于 mac m1 的系統進行安裝的&#xff0c;所…

深度學習數據集劃分比例多少合適

在機器學習和深度學習中&#xff0c;測試集的劃分比例需要根據數據量、任務類型和領域需求靈活調整。 1. 常規劃分比例 通用場景 訓練集 : 驗證集 : 測試集 60% : 20% : 20% 適用于大多數中等規模數據集&#xff08;如數萬到數十萬樣本&#xff09;&#xff0c;平衡了訓練數…

【TS學習】(15)分布式條件特性

在 TypeScript 中&#xff0c;分布式條件類型&#xff08;Distributive Conditional Types&#xff09; 是一種特殊的行為&#xff0c;發生在條件類型作用于裸類型參數&#xff08;Naked Type Parameter&#xff09; 時。這種特性使得條件類型可以“分布”到聯合類型的每個成員…

NSSCTF [HGAME 2023 week1]simple_shellcode

3488.[HGAME 2023 week1]simple_shellcode 手寫read函數shellcode和orw [HGAME 2023 week1]simple_shellcode (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file vuln vuln: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpret…

PostgreSQL的擴展(extensions)-常用的擴展-pg_dirtyread

PostgreSQL的擴展&#xff08;extensions&#xff09;-常用的擴展-pg_dirtyread pg_dirtyread 是 PostgreSQL 的一個特殊擴展&#xff0c;它允許讀取已被刪除但尚未被 VACUUM 清理的數據行&#xff0c;是數據恢復的重要工具。 原理&#xff1a; pg_dirtyread 通過直接訪問表的…

linux3 mkdir rmdir rm cp touch ls -d /*/

Linux 系統的初始目錄結構遵循 FHS&#xff08;Filesystem Hierarchy Standard&#xff0c;文件系統層次標準&#xff09;&#xff0c;定義了每個目錄的核心功能和存儲內容。以下是 Linux 系統初始安裝后的主要目錄及其作用&#xff1a; 1. 核心系統目錄 目錄用途典型內容示例…

Bazel中的Symbol, Rule, Macro, Target, Provider, Aspect 等概念

學習Bazel &#xff0c;就要學習Bazel 的規則定義&#xff0c; 弄清各個概念是重要的一個步驟。 在 Bazel 規則定義中&#xff0c;Symbol、Rule 和 Macro 是常見的概念。除此之外&#xff0c;Bazel 還有 Target、Provider、Aspect Repository、Package、 Workspace、 Configura…

深入探究 Hive 中的 MAP 類型:特點、創建與應用

摘要 在大數據處理領域,Hive 作為一個基于 Hadoop 的數據倉庫基礎設施,提供了方便的數據存儲和分析功能。Hive 中的 MAP 類型是一種強大的數據類型,它允許用戶以鍵值對的形式存儲和操作數據。本文將深入探討 Hive 中 MAP 類型的特點,詳細介紹如何創建含有 MAP 類型字段的表…

基于Java的區域化智慧養老系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘 要 時代在飛速進步&#xff0c;每個行業都在努力發展現在先進技術&#xff0c;通過這些先進的技術來提高自己的水平和優勢&#xff0c;區域化智慧養老系統當然不能排除在外。區域化智慧養老系統是在實際應用和軟件工程的開發原理之上&#xff0c;運用Java語言、JSP技術以及…

關于JVM和OS中的指令重排以及JIT優化

關于JVM和OS中的指令重排以及JIT優化 前言&#xff1a; 這東西應該很重要才對&#xff0c;可是大多數博客都是以訛傳訛&#xff0c;全是錯誤&#xff0c;尤其是JVM會對字節碼進行重排都出來了&#xff0c;明明自己測一測就出來的東西&#xff0c;寫出來誤人子弟… 研究了兩天&…

VS2022遠程調試Linux程序

一、 1、VS2022安裝參考 VS Studio2022安裝教程&#xff08;保姆級教程&#xff09;_visual studio 2022-CSDN博客 注意&#xff1a;勾選的時候&#xff0c;要勾選下方的選項&#xff0c;才能調試Linux環境下運行的程序&#xff01; 2、VS2022遠程調試Linux程序測試 原文參…

WPF設計學習記錄滴滴滴4

<Button x:Name"btn"Content"退出"Width" 100"Height"25"Click"btn_Click" IsDefault"True"/> <Button x:Name"btn" <!-- 控件標識&#xff1a;定義按鈕的實例名稱為"btn&…