1. 程式人生 > >2. 文件包含(150)

2. 文件包含(150)

atp .com clas amt ss7 cse aws jea mtr

文件包含 (150)

-------南京郵電大學ctf : http://4.chinalover.sinaapp.com/web7/index.php

技術分享圖片技術分享圖片

從這道ctf的網址 :http://4.chinalover.sinaapp.com/web7/index.php?file=show.php

我們明顯感受到了文件包含的信息

文件包含漏洞,先了解一下php://filter
php://filter 是一種元封裝器, 設計用於數據流打開時的篩選過濾應用。

php://filter

php://filter 是一種元封裝器, 設計用於數據流打開時的篩選過濾應用。 這對於一體式(all-in-one)的文件函數非常有用,類似 readfile()、 file() 和
file_get_contents(), 在數據流內容讀取之前沒有機會應用其他過濾器。
php://filter 目標使用以下的參數作為它路徑的一部分。 復合過濾鏈能夠在一個路徑上指定。詳細使用這些參數可以參考具體範例。 php://filter 參數
名稱 描述
resource=<要過濾的數據流> 這個參數是必須的。它指定了你要篩選過濾的數據流。 read=<讀鏈的篩選列表> 該參數可選。可以設定一個或多個過濾器名稱,以管道符(|)分隔。 write=<寫鏈的篩選列表> 該參數可選。可以設定一個或多個過濾器名稱,以管道符(|)分隔。
<;兩個鏈的篩選列表> 任何沒有以 read= 或 write= 作前綴 的篩選器列表會視情況應用於讀或寫鏈。

同時我也借此機會學到了文件讀取的相關知識。

  • include “test.php”php文件包含,在執行流中插入寫在其他文件中的有用的代碼。讀取的時候也是數據流形式,因此可以使用php://filter進行過濾,返回值為0,1。
  • readfile(“test.php”)是將文件以數據流的形式讀取過來,並不會執行,但會在前臺瀏覽器上進行解析。返回值是字節數多少。
  • file_get_contents(“test.php”)返回值為文本內容

    此題運用的就是關於數據流過濾的文件包含,我們一般在進行文件包含的時候都這麽寫include “test.php”獲得的就是test.php直接解析出來。但如果運用readfile(“test.php”) 就不進行解析,導致無法在瀏覽器前臺進行顯示。那麽問題來了看題

它讓我點擊它 我一下子就點了他!!!
出來了個這個URL

http://4.chinalover.sinaapp.com/web7/index.php?file=show.php
  • 1

一看呵呵噠,典型的文件包含漏洞我們可以通過構造含有漏洞的語句,查看想要看的代碼


file=php://filter/read=convert.base64-encode/resource=index.php

註解:
1.php://filter/可用於處理打開的數據流,起到過濾作用。如果源文件為.php則很有可能在前臺顯示不出來。
2.此時我們采用的方法是,先讓文件轉化為base64格式(convert.base64-encode)然後再輸出,這樣不論是什麽格式的文件都可以在前臺輸出。

convert.base64-encode和 convert.base64-decode使用這兩個過濾器等同於分別
用 base64_encode()和 base64_decode()函數處理所有的流數據。 
convert.base64-encode支持以一個關聯數組給出的參數。如果給出了 line-length,base64 輸出將被用 line-length個字符為 長度而截成塊。
如果給出了 line-break-chars,每塊將被用給出的字符隔開。這些參數的效果和用 base64_encode()再加上 chunk_split()相同。

3.再次解碼就可得到源代碼,怎麽樣是不是很神奇啊!
看圖片:
技術分享圖片
看見了base64編碼!!
python解碼就行啦,看圖
技術分享圖片
就可以得到flag


2. 文件包含(150)