1. 程式人生 > >Bugku–flag在index裡(本地檔案包含)writeup

Bugku–flag在index裡(本地檔案包含)writeup

這道題目裡有經典的本地檔案包含漏洞+php偽協議的結合應用

點選後

注意到url地址  http://120.24.86.145:8005/post/index.php?file=show.php

這是一個典型的檔案包含漏洞,(file關鍵字是提示,其實也是CTF的套路)。

具體怎麼用呢,先說結果:

http://120.24.86.145:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

然後將得到的字串base64解碼得到index的原始碼:

現在具體說說file=php://filter/read=convert.base64-encode/resource=index.php的含義

首先這是一個file關鍵字的get引數傳遞,php://是一種協議名稱,php://filter/是一種訪問本地檔案的協議,/read=convert.base64-encode/表示讀取的方式是base64編碼後,resource=index.php表示目標檔案為index.php。

通過傳遞這個引數可以得到index.php的原始碼,下面說說為什麼,看到原始碼中的include函式,這個表示從外部引入php檔案並執行,如果執行不成功,就返回檔案的原始碼。

而include的內容是由使用者控制的,所以通過我們傳遞的file引數,是include()函式引入了index.php的base64編碼格式,因為是base64編碼格式,所以執行不成功,返回原始碼,所以我們得到了原始碼的base64格式,解碼即可。

如果不進行base64編碼傳入,就會直接執行,而flag的資訊在註釋中,是得不到的。

我們再看一下原始碼中 存在對 ../ tp data input 的過濾,其實這都是php://協議中的其他方法,都可以結合檔案包含漏洞執行