文件包含就是一個文件裏面包含另一個文件。一開始接觸的時候是由於php裏面,可是查找了一些資料這個存在在不少語言裏面。
程序開發人員通常會把重複使用的函數寫到單個文件中,須要使用某個函數時直接調用此文件,而無需再次編寫,這中文件調用的過程通常被稱爲文件包含。
程序開發人員通常但願代碼更靈活,因此將被包含的文件設置爲變量,用來進行動態調用,
但正是因爲這種靈活性,從而致使客戶端能夠調用一個惡意文件,形成文件包含漏洞。
幾乎全部腳本語言都會提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,
而在JSP、ASP、程序中卻很是少,甚至沒有,這是有些語言設計的弊端。
在PHP中常常出現包含漏洞,但這並不意味這其餘語言不存在。php
經過引入文件時,用戶可控,沒有嚴格的檢驗,或是被繞過,操做一些敏感文件,致使文件泄露和惡意代碼注入
當包含文件在服務器本地上,就造成本地文件包含,當包含的文件在第三方服務器是,就造成可遠程文件包含。web
1.include()shell
2.include_once()服務器
3.require()函數
4.require_once()工具
代碼審計的時候,是不是變量,不過濾,過濾不嚴格,函數include/requireui
遠程文件(包括本地文件包含)包含比本地文件包含的危害大url
包含data//或是php://input協議(僞協議,須要allow_url_include=On) 做者:青山i 連接:https://www.jianshu.com/p/110278faeddb設計
使用PHP封裝協議讀取文件和寫入PHP文件
1.讀取文件
先看看讀取文件,如輸入page參數值爲:php://filter/read=convert.base64-encode/resource=../../../../../var/www/dvwa/hackable/uploads/1.txt
格式爲上
2.寫入文件
前提條件是allow_url_include爲on,則構造以下URL:192.168.220.128/dvwa/vulnerabilities/fi/?page=php://input
而後再POST須要輸入的內容便可,這裏經過Firefox的HackBar來POST數據日誌