檔案包含漏洞:
檔案包含的原理:
? 開發者為了方便呼叫檔案,檔案呼叫函式沒有經過嚴格的過濾,導致可以被用戶非法的呼叫,其中就包含了惡意的檔案,導致執行了惡意的代碼,
檔案包含的分類:
1. 本地包含:
- 無限制的本地包含
<?php
$filename = $_GET['x'];
include ("$filename");
?>
- 有限制的本地包含
<?php
$filename = $_GET['x'];
include ("$filename"."html"); /*可以通過%00截斷將后綴截斷(只適用于php5.2版本及以下) 在高版本可以用過特殊符號來截斷,如././././././ ............繞過*/
?>
2.遠程包含
遠程檔案包含就是允許攻擊者包含一個遠程的檔案,一般是在遠程服務器上預先設定好的腳本, 此漏洞是因為瀏覽器對用戶的輸入沒有進行檢查,導致不同程度的資訊泄露、拒絕服務攻擊 甚至在目標服務器上執行代碼,
-
無限制的遠程包含
可以直接引入遠程的檔案就能夠在目標服務器上執行代碼
-
有限制的遠程包含
繞過的方式可以通過特殊符號如? %20 %23 %00截斷
偽協議:
php常見的偽協議:
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:// — 處理互動式的流
php.ini的引數設定:
在php.ini里有兩個重要的引數allow_url_fopen、allow_url_include,
allow_url_fopen:默認值是ON,允許url里的封裝協議訪問檔案;
allow_url_include:默認值是OFF,不允許包含url里的封裝協議包含檔案

I春秋百度杯CTF二月場(白盒)
<?php
show_source(__FILE__);
if(isset($_REQUEST['path'])){
include($_REQUEST['path']);
}else{
include('phpinfo.php');
}
-
根據大小寫判斷靶場的作業系統為linux系統
-
通過偽協議php://input + [post php代碼]可以獲取到當前檔案夾的所有檔案

-
通過讀取檔案拿到flag

檔案包含(黑盒):
payload:?file=php://filter/read=convert.base64-encode/resource=index.php

拿到flag
data://偽協議
data://text/plain,
data://text/plain;base64, //可執行php代碼
http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/319638.html
標籤:其他
上一篇:LTE接入流程
