[SWPUCTF 2021 新生赛]PseudoProtocols

看到提示和地址栏 很明显了吧 伪协议

base64解码可得

<?php
//go to /test2222222222222.php
?>

 <?php
ini_set("max_execution_time", "180");
show_source(__FILE__);
include('flag.php');
$a= $_GET["a"];
if(isset($a)&&(file_get_contents($a,'r')) === 'I want flag'){
    echo "success\n";
    echo $flag;
}
?> 
//学习一个新函数
//file_get_contents() 是一个 PHP 内置函数,它的作用是读取文件的内容并返回一个字符串。它的第一个参数是文件名,第二个参数是一个可选的打开模式,用于指定文件的读取方式。'r' 模式表示以只读方式打开文件。

此题有俩种解法

  1. php://input 此方法需要前提条件,即开启allow_url_include=On。
    相当于一个远程包含的利用,php://打开文件流后,直接写入恶意代码。
  2. data://text/plain,
    data://本身是数据流封装器,他们原理类似,input是POST,而data是GET
posted @ 2023-05-17 20:57  Y_Onism  阅读(90)  评论(0编辑  收藏  举报