文件包含:通過一些文件包含的函數將本地或者遠程服務器中問文件包含解析到當前服務器中,達到文件讀取、代碼利用、函數調用等目的。
Include“文件名” == include(“文件名”)
<?php
include ("1.html");
Include_once
<?php
include_once("1.html");
echo "123";
去包含文件時,后者只需要包含一次,當找不到要包含的文件,會警告,但后續代碼依舊會執行
<?php
include_once("x.html");
echo "123";
Require
Require_once包含文件是,后者需要包含一次即可,當找不到包含的文件時,會直接報錯並且后續代碼不執行
<?php
require_once("1.html");
echo "123";
<?php
require_once("x.html");
echo "123";
包含過來的文件中,只要文件中代碼是標准格式的php代碼就會被解析,文件格式不影響。如果沒有php代碼,就會顯示文件內容。文件包含的文件路徑可以是絕對路徑,也可以是相對路徑。
Copy good.png/b+shell.php/a bad.png(windows本地生成圖片馬)
good.png是一個正常的圖片,/b表示比特流文件
Shell.php這是木馬文件或者含有php代碼的文件,后綴名不做要求,/a表示是ascll文件
Bad.png這是生成的圖片馬
用php報錯查看文件
<?php
@include($_GET["filename"]);//會警告,但是@隱藏警告信息,這個時候可以通過對filename的賦值實現對文件的查看
在上兩級文件路徑下也有相同文件,可以通過../../回到上兩級目錄下
Linux讀文件時需要注意web服務對應的權限
在網站根目錄創建index.php文件
給filename賦值實現想要的操作。