語言 讀ini檔案 檔案包含漏洞 上

2021-10-12 21:48:53 字數 2524 閱讀 5899

伺服器執行php檔案時,可以通過檔案包含函式載入另乙個檔案中的php**,並且當php來執行。

有效避免防火牆的查殺。

(1)require()

(2)require_once()

(3)include()

(4)include_once()

include和require區別主要是,include在包含的過程中如果出現錯誤,會丟擲乙個警告,程式繼續正常執行;而require函式出現錯誤的時候,會直接報錯並退出程式的執行。

include_once(),require_once()這兩個函式,與前兩個的不同之處就在於這兩個函式只包含一次,適用於在指令碼執行期間同乙個檔案有可能被包括超過一次的情況下,你想確保它只被包含一次以避免函式重定義,變數重新賦值等問題。

(1)建立1.php、b.php、c.php

(2)訪問127.0.0.1/1.php?sj=b.php

(3)訪問127.0.0.1/1.php?sj=c.php

2.本地檔案包含

(1)建立2.php、3.php

(2)訪問127.0.0.1/2.php?sj=3.php

3.本地檔案包含——公升級

(1)建立1.txt

(2)瀏覽器訪問127.0.0.1/1.txt

(3)將1.txt重新命名為1.jpg,訪問127.0.0.1/2.php?sj=1.jpg

(4)瀏覽器訪問127.0.0.1/2.php?sj=1.jpg

無論是txt、jpg、rar等任何格式 ,經過檔案包含都會轉化為php來執行。

(5)菜刀連線127.0.0.1/2.php?sj=1.jpg

windows系統

c:\boot.ini //檢視系統版本c:\windows\system32\inetsrv\metabase.xml //iis配置檔案c:program files\mysql\my.ini //mysql 配置c:program files\mysql\data\mysql\user.myd //mysql rootc:\windows\php.ini //php配置檔案  c:\windows\my.ini
linux系統/unix系統例如127.0.0.1/2.php?=../../../../etc/passwd

這會限制被包含檔案的格式。所有的檔案都會被當html執行。

(1)修改3.php裡面的內容

訪問

(2)繞過方法

1)點點點*n繞過(點數正好相等)

2)%00(%00截斷)

在url後面輸入%00即可截斷html

條件:allow_url_fopen=off

php版本<5.3.4>

3)長路徑截斷

條件:windows os,點號需要長於256;windows下目錄最大長度為256位元組,超出的部分將會被丟棄

linux os 長於4096;linux下目錄最大長度為4096位元組,超出的部分將會被丟棄

(1)了解apache日誌

(2)開啟日誌

將前面的注釋去掉,重啟伺服器即可

(3)讀取日誌2.php裡面的內容

訪問127.0.0.1/2.php?sj=../apache/logs/access.log

(4)burp抓包,新增一句話木馬

(5)檢視日誌

(6)連線菜刀,檢視檔案管理

由於檔案包含內容涉及面過廣,下節繼續遠端檔案包含及如何防禦。

檔案包含漏洞

簡單的來說,就是我們用乙個可控的變數作為檔名並以檔案包含的的方式呼叫了它,漏洞就產生了。以php為例檔案包含漏洞可以分為rfi 遠端檔案包含 和lfi 本地檔案包含漏洞 兩種。而區分他們最簡單的方法就是php.ini中是否開啟了allow url include。如果開啟了可能包含遠端檔案,如果不是...

檔案包含漏洞

1 什麼是檔案包含漏洞 檔案包含,包括本地檔案包含 locao file inclusion,lfi 和遠端檔案包含 remote file inclusion,rfi 兩種形式。首先,本地檔案包含就是通過瀏覽器引進 包含 web伺服器上的檔案,這種漏洞一般發生在瀏覽器包含檔案時沒有進行嚴格的過濾,...

檔案包含漏洞

直接執行 的函式 eval assert system exec shell exec passthru escapeshellcmd pcntl exec 等就不一一舉例了。1 eval eval 函式把字串按照 php 來計算,如常見的一句話後門程式 eval post cmd 2 assert...