[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' 模式表示以只读方式打开文件。
此题有俩种解法
- php://input 此方法需要前提条件,即开启allow_url_include=On。
相当于一个远程包含的利用,php://打开文件流后,直接写入恶意代码。
- data://text/plain,
data://本身是数据流封装器,他们原理类似,input是POST,而data是GET