1. 程式人生 > >CTF/CTF練習平臺-flag在index裡【php://filter的利用】

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

原題內容:

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檔案的原始碼了

看到一個大佬的部落格講的特別棒,我已轉載至我的部落格,大家可以前去一看

參考原文

http://blog.csdn.net/qq_35078631/article/details/69488266

http://www.freebuf.com/articles/web/14097.html