CTF/CTF練習平臺-flag在index裡【php://filter的利用】
阿新 • • 發佈:2019-02-20
原題內容:
http://120.24.86.145:8005/post/
Mark一下這道題,前前後後弄了兩個多小時,翻了一下別的博主的wp感覺還是講的太粗了,這裡總結下自己的理解:
首先開啟這道題,頁面只給你click me? no
點選進去顯示test5
第一步,檢視原始碼,無果
第二步bp,無果
結合到題目,flag在index裡,大膽嘗試http://120.24.86.145:8005/post/index.php,可惜和之前一樣
注意到了傳值為http://120.24.86.145:8005/post/index.php?file=show.php
file這個變數應該是關鍵,可惜無果
參考到別的博主的wp:
file傳值為
php://filter/read=convert.base64-encode/resource=index.php
結果如下:
可能很多人到這裡並不太理解,這裡我做具體解釋:
首先來解釋下這段程式碼的意思:
即以base64加密的方式讀取resource的內容
然後我們來看一下php://filter的限制
要求將傳進來的引數進入include();在這題即是$file //這裡就打亂了我的胡思亂想,哈哈哈,還以為所有題目都可以呢
這點要求在後來拿到的題目原始碼中也可確認:
<html> <title>Bugku-ctf</title> <?php error_reporting(0); if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';} $file=$_GET['file']; if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){ echo "Oh no!"; exit(); } include($file); //flag:flag{edulcni_elif_lacol_si_siht} ?> </html>
下面演示通過php://filter讀取本包含漏洞指令碼的原始碼
接下來只要將base64編碼後的字串通過base64解碼就可得到PHP檔案的原始碼了
看到一個大佬的部落格講的特別棒,我已轉載至我的部落格,大家可以前去一看
參考原文
http://blog.csdn.net/qq_35078631/article/details/69488266
http://www.freebuf.com/articles/web/14097.html