upload-labs 靶場通關(1-20)

目錄

Pass-01(JS 繞過)

Pass-02(文件類型驗證)

Pass-03(黑名單驗證)

Pass-04(黑名單驗證.htaccess)

Pass-05(大小寫繞過)

Pass-06(末尾空格)

Pass-07(增加一個.)

Pass-08(增加一個::$DATA)?

Pass-09(代碼不嚴謹)

Pass-10(PPHPHP)

Pass-11(0x00 截斷)

Pass-12(Post 0x00 截斷)

Pass-13(圖片木馬)

Pass-14(圖片木馬)

Pass-15(圖片木馬)

Pass-16(二次渲染繞過)

Pass-17(條件競爭)

Pass-18(解析漏洞)

Pass-19(黑名單)

Pass-20(白名單)


Pass-01(JS 繞過)

1.保存當前頁面。

2.使用編輯器打開頁面,修改代碼。

3.修改成如下內容。

if (1 == -1 )?

4.打開我們下載的html文件,上傳我們的1.php,上傳成功。

Pass-02(文件類型驗證)

1.通過下面代碼可以看出,他驗證的是文件類型。

2.使用 bp 攔截,修改Content-Type: image/png。

3.放包之后就發現上傳成功。

Pass-03(黑名單驗證)

1.根據代碼我們發現是黑名單驗證。

2.根據apche服務器能夠使用php解析.phtml .php3,我們可以使用php3后綴嘗試上傳。

Pass-04(黑名單驗證.htaccess)

使用.htaccess(超文本訪問)
是許多 Web 服務器根據目錄應用設置的有用文件,允許在運行時覆蓋 Apache 服務器的
默認配置。使用.htaccess,我們可以在運行時輕松啟用或禁用任何功能。
1.新建文件.htaccess,并上傳。
<FilesMatch "loudong.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
2.把PHP文件重新命名,并上傳。
3.上傳結果。

Pass-05(大小寫繞過)

代碼里面沒有驗證大寫,可以把文件名變成大寫

1.我們使用bp抓包進行修改。

2.上傳成功。

Pass-06(末尾空格)

查看代碼我們發現,比上一關少了一行首尾去空的代碼。
上傳的時候在文件名加個空格

Pass-07(增加一個.)

和上一關對比,少了刪除末尾點的代碼
我們使用bp抓包修改

Pass-08(增加一個::$DATA)

在 window 的時候如果文件名+"::$DATA"會把::$DATA 之后的數據當成文件流處理,不會檢測后
綴名,且保持::$DATA 之前的文件名,他的目的就是不檢查后綴名
例如:"phpinfo.php::$DATA"Windows 會自動去掉末尾的::$DATA 變成"phpinfo.php"
上面代碼沒有::$DATA,這塊的驗證

Pass-09(代碼不嚴謹)

借助的是代碼不嚴謹
deldot,即從字符串的尾部開始,從后向前刪除點.,直到該字符串的末尾字符不是.為止。
而如果中間有個空格,就不會繼續刪除
<?php
include '../common.php';
$file_name = deldot('image.jpg. .');//刪除文件名末尾的點
echo $file_name;
?>

使用bp抓包,在文件名后添加 ". ."

Pass-10(PPHPHP)

str_ireplace 函數用于字符串替換操作,不區分大小寫其語法是str_ireplace(find,replace,string,count)。
參數 find 必需,規定要查找的值;replace 必需,規定替換 find 中的值的值;string 必需,規定被搜索的字符串。
我們bp抓包修改

Pass-11(0x00 截斷)

這個案例要求php 的 magic_quotes_gpc 為 OFF 狀態
關鍵的代碼在于這里的save_path 是一個可控的變量,但是后面還拼接上一個后綴名,也需要繞過
我們這里采用 %00 截斷。

00 截斷是操作系統層的漏洞,由于操作系統是 C 語言或匯編語言編寫的,這兩種語言

在定義字符串時,都是以\0(即 0x00)作為字符串的結尾。操作系統在識別字符串

時,當讀取到\0 字符時,就認為讀取到了一個字符串的結束符號。因此,我們可以通

過修改數據包,插入\0 字符的方式,達到字符串截斷的目的。

我們這里上傳loudong.jpg。

再使用bp抓包修改。

Pass-12(Post 0x00 截斷)

和上面一題代碼對比,這里使用的是 Post 方式

但和 get 對比,需要多做一次解碼的工作

GET 型提交的內容會被自動進行 URL 解碼,在 POST 請求中,%00 不會被自動解碼

使用bp抓包修改

我們需要對%00進行url編碼,然后放包

Pass-13(圖片木馬)

這個案例會驗證上傳內容,確認是圖片格式,所以不能簡單把 php 轉化為 jpg,需要使用圖片木馬

需要在正常圖片里面加入惡意代碼執行以下命令
copy image.png /b + info.php /a webshell.png
上傳的是個圖片,我們可以使用文件包含漏洞來把圖片當作代碼執行
在地址欄輸入如下
結果如下:

Pass-14(圖片木馬)

getimagesize() 函數用于獲取圖像大小及相關信息,成功返回一個數組,失敗則返回 FALSE 并產生一條 E_WARNING 級的錯誤信息
和上面的 13 題的步驟一樣

Pass-15(圖片木馬)

PHP 中的 exif_imagetype()函數用于確定圖像的類型。此函數讀取給定圖像的第一個字節并檢查其簽名。當找到正確的簽名時,則 exif_imagetype()返回適當的常量值;否則它返回 False。

和上面的題的步驟一樣

Pass-16(二次渲染繞過)

這個案例使用的是 imagecreatefromjpeg、imagecreatefrompng、imagecreatefromgif
三個不同的方法來驗證不同的文件,繞過格式不正確,會報出異常

但這題重新渲染了圖片,植入木馬的圖片實際已經被刪除了,這個案例建議使用 gif 的文件來上傳木馬,gif 最高支持 256 種顏色。由于這種特性,重新渲染改動不會太多!

?Nodepad++安裝新插件

上傳后,和服務器上傳了的文件對比,把惡意腳本放到沒有改變的地方(修改很可能破壞原圖
片,需要多次嘗試)
上傳修改后的 webshell.gif

Pass-17(條件競爭

這個是白名單驗證,unlink 函數是刪除文件,rename 函數進行文件的移動(也會刪除源文件)

但仔細看這段代碼,是不管什么文件都能傳,但不管是否圖片,后門都刪除,可以考慮條件競爭

就是沒刪除之前,如果文件是打開的狀態,可能刪除失敗,這樣就能保留原理的文件

直接上傳一個1.php文件,然后進行抓包,將數據包發送至intruder下。

然后發包,用另一個瀏覽器一直訪問1.php地址,只要在上傳的一瞬間,他還沒來的及刪除、修改就可以了。

Pass-18(解析漏洞)

這里的話采用了白名單

文件上傳之后又對其進行了重命名,不能使用文件包含的漏洞
這里是先移動文件,再修改文件名,所以的話是存在利用條件競爭
步驟方法和上一關一樣

Pass-19(黑名單)

這個題目使用的是黑名單,并且文件名是可以控制的
方法一:采用%00截斷,并url編碼
方法二:如果文件名upload-19.php/.? ?
那么驗證的是 php/.可以驗證通過

Pass-20(白名單)

end() 函數將數組內部指針指向最后一個元素,并返回該元素的值,所以這個函數可以接受數組的

reset() 函數將內部指針指向數組中的第一個元素,并輸出,所以這個函數也可以接受數組的

count() 統計數組有多少個元素

既然可以接受數組

save_name[0]=upload-20.php

save_name[2]= jpg

這行代碼拼接的名字為

upload-20.php+"." +save_name[1]的數據

由于 save_name[1]沒有,結果為 upload-20.php.

使用bp抓包,并如下圖修改

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

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

相關文章

[附源碼+數據庫+畢業論文]基于Spring+MyBatis+MySQL+Maven+vue實現的酒店預訂管理系統,推薦!

摘 要 使用舊方法對酒店預訂信息進行系統化管理已經不再讓人們信賴了&#xff0c;把現在的網絡信息技術運用在酒店預訂信息的管理上面可以解決許多信息管理上面的難題&#xff0c;比如處理數據時間很長&#xff0c;數據存在錯誤不能及時糾正等問題。 這次開發的酒店預訂管理系…

LSTM入門案例(時間序列預測)| pytorch實現(可復現)

需求 假如我有一個時間序列&#xff0c;例如是前113天的價格數據&#xff08;訓練集&#xff09;&#xff0c;然后我希望借此預測后30天的數據&#xff08;測試集&#xff09;&#xff0c;實際上這143天的價格數據都已經有了。這里為了簡單&#xff0c;每一天的數據只有一個價…

Axure RP 10 預覽顯示“無標題文檔”的空白問題探索【護航版】

1. 安裝情況 官網 Axure RP 10&#xff1a;Download Axure RP 10 - Axure &#xff08;PS&#xff1a;11都出了&#xff09; 版本&#xff1a;10.0.0.3924 激活碼&#xff1a;49bb9513c40444b9bcc3ce49a7a022f9 &#xff08;10/11都可以用&#xff0c;但只嘗試了10&#xff…

基于SpringBoot+Vue的汽車租賃系統(協同過濾算法、騰訊地圖API、支付寶沙盒支付、WebsSocket實時聊天、ECharts圖形化分析)

系統亮點&#xff1a;協同過濾算法、騰訊地圖API、支付寶沙盒支付、WebsSocket實時聊天、ECharts圖形化分析&#xff1b;01系統開發工具與環境搭建—前后端分離架構項目架構&#xff1a;B/S架構運行環境&#xff1a;win10/win11、jdk17前端&#xff1a;技術&#xff1a;框架Vue…

數據結構入門:像整理收納一樣簡單!

在我們生活中&#xff0c;經常會面對這樣的問題&#xff1a; “我要怎么整理我的衣柜&#xff1f;” “電腦里照片太多了&#xff0c;怎么歸類才方便查找&#xff1f;” 其實&#xff0c;程序員也有類似的煩惱。他們不整理衣柜&#xff0c;而是“整理數據”。而這門關于如何“收…

力扣每日一題--2025.7.15

&#x1f4da; 力扣每日一題–2025.7.15 3135. 有效單詞 &#xff08;簡單&#xff09; 大家好&#xff01;今天我們要來聊聊一道有趣的編程題——有效單詞 &#x1f4dd; 題目描述 題目分析 &#x1f4da; 題目要求我們判斷一個字符串是否為有效單詞。有效單詞需要滿足以下…

Mysql數據庫——增刪改查CRUD

文章目錄一、數據庫的基礎命令二、創建表三、增(create)四、查詢&#xff08;retrieve)五、條件查詢&#xff08;where&#xff09;六、修改&#xff08;update&#xff09;七、刪除&#xff08;delete&#xff09;一、數據庫的基礎命令 1.使用客戶端連接服務器 mysql -u root…

關于pytorch虛擬環境及具體bug問題修改

本篇博客包含對于虛擬環境概念的講解和代碼實現過程中相關bug的解決關于虛擬環境我的pytorch虛擬環境在D盤&#xff0c;相應python解釋器也在D盤&#xff08;一起&#xff09;&#xff0c;但是我的pycharm中的項目在C盤&#xff0c;使用的是pytorch的虛擬環境&#xff0c;這是為…

U盤量產工具與性能優化完全指南

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;U盤量產工具是IT行業中的專業軟件&#xff0c;用于批量生產或修復U盤。安國和銀燦是兩個提供U盤量產工具的主控芯片制造商&#xff0c;提供初始化、格式化、分區管理、性能優化、故障修復、個性化定制、固件升級…

Golang http開發實戰:構建RESTful API保姆級教程

目錄 章節1:RESTful API的精髓與Go的Web開發哲學 RESTful API的設計原則 Go的http包核心組件 實戰:第一個RESTful API端點 章節2:設計優雅的RESTful路由 路由設計的注意事項 使用Gorilla Mux實現動態路由 章節3:請求與響應的藝術:解析與格式化 解析請求數據 統一…

UGUI 性能優化系列:第一篇——基礎優化與資源管理

UGUI 性能優化系列&#xff1a;第一篇——基礎優化與資源管理 UGUI 性能優化系列&#xff1a;第二篇——Canvas 與 UI 元素管理 在 Unity 游戲中&#xff0c;用戶界面&#xff08;UI&#xff09;是玩家與游戲交互的核心。然而&#xff0c;不當的 UGUI 使用常常成為游戲性能的…

多端協同的招聘系統源碼開發指南:小程序+APP一體化設計

當下&#xff0c;很多企業選擇搭建屬于自己的多端協同招聘平臺&#xff0c;尤其是中大型人力資源公司、連鎖品牌企業&#xff0c;以及同城服務平臺&#xff0c;更是將“小程序APP”一體化招聘系統視為提升效率、降低用工成本的利器。 今天&#xff0c;筆者將從源碼開發的角度&a…

Maven 配置文件核心配置:本地倉庫、鏡像與 JDK 版本

Maven 配置文件核心配置&#xff1a;本地倉庫、鏡像與 JDK 版本 在 Maven 項目開發中&#xff0c;合理配置 settings.xml 文件能顯著提升依賴管理效率。本文將聚焦本地倉庫、鏡像加速和 JDK 版本這三個核心配置&#xff0c;結合 IDEA 環境詳細講解配置方法與作用。 一、Maven 配…

【時時三省】(C語言基礎)通過指針引用字符串

山不在高&#xff0c;有仙則名。水不在深&#xff0c;有龍則靈。 ----CSDN 時時三省如在printf函數中輸出一個字符串。這些字符串都是以直接形式&#xff08;字面形式&#xff09;給出的&#xff0c;在一對雙撇號中包含若干個合法的字符。使用字符串的更加靈活方便的方法——通…

【Linux驅動-快速回顧】一文快速理解GIC內部寄存器對中斷的控制

第一部分&#xff1a;GIC的功能和組成 1. GIC要解決的根本問題 在一個復雜的片上系統&#xff08;SoC&#xff09;中&#xff0c;有非常多的硬件模塊&#xff08;如定時器、串口、按鍵、DMA等&#xff09;&#xff0c;它們都需要在完成任務或遇到特定事件時通知CPU。同時&#…

【IoTDB 線上小課 17】開源 ≠ 免費,3 分鐘總結開源商用指南

【IoTDB 視頻小課】第十七期&#xff0c;解答你最關心的開源商業使用問題&#xff01;關于 IoTDB&#xff0c;關于物聯網&#xff0c;關于時序數據庫&#xff0c;關于開源...一個問題重點&#xff0c;3-5 分鐘&#xff0c;我們講給你聽&#xff1a;原來開源商業化有這么多規則開…

VUE項目學習筆記 v-for綁定數據,該數據異步獲取,同時需要對v-for的DOM節點進行js操作

問題描述&#xff1a;項目里有一個輪播圖&#xff0c;輪播圖的圖片數據從服務器獲取&#xff0c;用v-for生成DOM在頁面中顯示&#xff0c;輪播圖插件會通過new Swiper給DOM添加CSS、事件等&#xff0c;實現輪播效果。在這里存在操作順序問題&#xff1a;當服務器返回圖片數據后…

Science | 如何利用“T細胞+組蛋白乙酰化”兩大國自然熱點?T細胞耗竭機制與代謝-表觀遺傳調控的新范式

CD8?T細胞耗竭&#xff08;T cell exhaustion&#xff09;是腫瘤免疫治療的核心瓶頸&#xff0c;其表觀遺傳重塑機制&#xff08;如組蛋白修飾&#xff09;是當前國自然重點資助的前沿方向。耗竭T細胞&#xff08;TEX&#xff09;是指在慢性感染&#xff08;如持續性病毒感染&…

Logback 配置的利器:深入理解<property>與<variable>

在構建現代 Java 應用程序時&#xff0c;日志是不可或缺的一部分。一個健壯的日志系統不僅能幫助我們監控應用程序的運行狀態&#xff0c;還能在問題發生時提供關鍵的診斷信息。Logback 作為 SLF4J 的一個流行實現&#xff0c;以其高性能和靈活的配置而廣受開發者喜愛。 然而&a…

Java中excel字典轉換

? 背景說明EasyExcel 原生的 ExcelProperty 注解不支持 dictType&#xff08;不像那樣有 Excel(dictType"xxx")&#xff09;&#xff0c;所以如果你想實現字典翻譯功能&#xff0c;就需要自己實現 Converter 接口&#xff0c;比如 DictConvert。? 什么是 DictConve…