當前位置:
首頁 > 最新 > 您有一份CTF代碼審計文件等待查收

您有一份CTF代碼審計文件等待查收

0x01背景

上周總結了一些文件包含與偽協議結合的利用方法,本周就找一道例題進行演練。題目源自國外某挑戰平台,平台上還有許多其他有趣的challenges題目,小夥伴有興趣也可以上去好好玩耍一番。

題目地址:http://level3.tasteless.eu/index.php?file=

站點地址:http://chall.tasteless.eu/

0x02解題過程

首先訪問題目站點:

http://level3.tasteless.eu/index.php?file=發現給出了題目的源碼,所以本題便是要通過代碼審計獲取flag.

源碼信息:

源碼中展示的信息還是很直接的:

1.高亮讀取 index.php的源碼。

2.在提示信息中告知要讀取PHP.ini ,裡面有敏感信息。

3.包含了anti_rfi.php,並提示不允許進行遠程文件包含。

4.使用require_one包含了GET請求的file參數。

根據上面的代碼情況可以知道最重要的是第4點,所以可以使用如下思路進行解題。

1.讀取PHP.ini和anti_rfi.php,獲取足夠的信息。

2.繞過anti_rfi.php並遠程包含一句話。

3.使用PHP偽協議直接執行代碼。

從php.ini中得到了allow_url_include是on的狀態,所以可以使用PHP偽協議執行代碼,可以使用php://input的協議,成功執行了代碼。

此時需要獲取站點的目錄信息,由於allow_url_fopen是為off的狀態所以無法使用遠程文件包含執行命令了,也就無法直接用菜刀去連接並尋找flag,但是已經知道網站的根目錄/var/www/chall/level3

此時本想可以使用命令執行的函數執行命令獲取目錄信息,但是這裡似乎做了限制,無法執行系統命令,所以這裡需要介紹PHP的scandir()函數會將當先目錄下的目錄結構以數組的方式保存,請求http://level3.tasteless.eu/index.php?file=php://input [POST DATA:]得到flag文件的名稱。

訪問th3_th3_fl4g得到flag的值。

0x03小小總結

想必上周總結的偽協議與本周文件包含結合的利用方法小夥伴已經GET到了,解題過程大致有如下3步驟:

1.分析站點給出的源代碼。

2.判斷allow_url_fopen,allow_url_include的開啟狀態,來推測可以使用的偽協議。

3.使用相應的偽協議執行代碼獲取flag。

當無法判斷allow_url_fopen,allow_url_include的開啟狀態時,可逐一嘗試如下的請求判斷哪些能夠執行,如果有上傳功能那麼可能是考phar或zip等壓縮流的知識點。

PHP 讀文件和代碼執行的方式:

1.?file=data:text/plain,

2.?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

3.?file=php://input [POST DATA:]

4.?file=php://filter/read=convert.base64-encode/resource=xxx.php

0x04 擴展小知識

雖然本題allow_url_fopen是off的狀態,所以是無法使用遠程文件包含的,如果是ON的話就需要使用文件包含讀取文件,查看文件中的源碼了。

如使用讀取anti_rfi.php文件的源碼信息。

從源碼中可以看到使用了正則匹配匹配到了,返回hacker detected,但是並沒有匹配所以使用ftp://也是一個思路。

通往白帽子的奇妙世界


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 漏斗社區 的精彩文章:

w3af系列高級篇(三)

TAG:漏斗社區 |