檔案包含與PHP偽協議實戰演練

2021-10-17 23:17:53 字數 3337 閱讀 9610

1、include() 、require()

當使用include()函式包含檔案時,只有**執行到 include() 函式時才將檔案包含進來,發生錯誤時只給出乙個警告,繼續向下執行。

當使用require()函式包含檔案時,只要程式一執行就會立即呼叫檔案,發生錯誤的時候會輸出錯誤資訊,並且終止指令碼的執行

2、include_once() 功能和 include() 相同,區別在於當重複呼叫同一檔案時,程式只呼叫一次。

require_once()功能和require()相同,區別在於當重複呼叫同一檔案時,程式只呼叫一次。

當使用上述四個函式包含乙個新檔案時,該檔案將作為 php **執行,php 核心並不在意該被包含的檔案是什麼型別。所以如果被包含的是 txt 檔案、檔案、遠端 url、也都將作為 php **執行。

robots.txt 內容為:<?php phpinfo();?>

路徑為:e:\phpstudy\www\robots.txt

1、本地檔案包含 lfi(local file include)

2、遠端檔案包含 rfi(remote file include)(需要 php.ini 中 allow_url_include=on、allow_url_fopen = on)

在 php.ini 中,allow_url_fopen 預設一直是 on,而 allow_url_include 從 php5.2 之後就預設為 off。

php偽協議事實上就是支援的協議與封裝協議(12種)

file:// — 訪問本地檔案系統

http:// — 訪問 http(s) **

ftp:// — 訪問 ftp(s) urls

php:// — 訪問各個輸入/輸出流(i/o streams)

zlib:// — 壓縮流

data:// — 資料(rfc 2397)

glob:// — 查詢匹配的檔案路徑模式

phar:// — php 歸檔

ssh2:// — secure shell 2

rar:// — rar

ogg:// — 音訊流

expect:// — 處理互動式的流

路徑為:e:\phpstudy\www\include.php

<?php 

include

($_get

[『file『]

)?>

robots.txt

路徑為:e:\phpstudy\www\robots.txt

<?php phpinfo();?>
robots.zip

路徑為:e:\phpstudy\www\robots.zip

內容為:robots.txt

1.php

路徑為:e:\phpstudy\www\1.php

<?php 

echo

('hello word!');

?>

flag.txt

路徑為:e:\flag.txt

在ctf中經常使用的是php://filter和php://input

(1)php://input用於執行php**。

也可以寫入shell獲取伺服器許可權

接下來就是連線後門就ok了

(2)php://filter用於讀取原始碼

php://filter在雙off的情況下也可以正常使用;

獲取到的內容是base64加密的,解碼即可獲取1.php原始碼

用於訪問本地檔案系統,在ctf中通常用來讀取本地檔案

file:// 協議在雙off的情況下也可以正常使用;

需要獲取檔案絕對路徑

可以寫入後門,獲取許可權執行任意命令

zip:// [壓縮檔案絕對路徑]#[壓縮檔案內的子檔名]

先將要執行的php**寫好檔名為robots.txt,將robots.txt進行zip壓縮,壓縮檔案名為rob.zip,如果可以上傳zip檔案便直接上傳,若不能便將rob.zip重新命名為rob.jpg後在上傳.

由於#在get請求中會將後面的引數忽略所以使用get請求時候應進行url編碼為%23,且此處經過測試相對路徑是不可行,所以只能用絕對路徑。

檔案包含與偽協議

說明 include 函式對檔案字尾名無要求,而對其中的語法有要求,即使字尾名為txt,jpg也會被當做php檔案解析,只要檔案內是形式就可以執行,但是如果不是php語法的形式,即使字尾為php,也無法執行。用於訪問本地檔案系統的檔案條件 allow url fopen off on allow u...

php檔案包含 偽協議 檔案上傳漏洞利用例項

1.上傳檔案過濾了字尾名和mime型別,files pic type 是由瀏覽器傳輸的檔案型別決定,但是mime content type 是由php 內建方法判斷檔案型別 2.任意檔案包含 f get f include once sys config.php include f 利用zip或ph...

php檔案包含 偽協議 檔案上傳漏洞相關說明

2.任意檔案包含 f get f include once sys config.php include f 利用zip或phar偽協議讀取壓縮包中的檔案 上傳webshell完成 擴充套件 php偽協議 file 訪問本地檔案系統 訪問 http s ftp 訪問 ftp s urls php 訪...