CTF--file_get_contents
一、原网页:

二、步骤:
1.源码分析:
<?phpextract($_GET); // 将 $_GET 数组中的所有键值对提取为变量if (!empty($ac)) // 只有当 $ac 不为空时,代码才会继续执行
{ $f = trim(file_get_contents($fn)); //trim():去除文件内容两端的空白字符(如空格、换行符等) /file_get_contents():读取由 $fn 指定的文件内容  if ($ac === $f)  // $ac 是否与 $f(文件内容)严格相等(===){echo "<p>This is flag:" ." $flag</p>";  // 如果相等,则输出一个提示信息,其中包含变量 $flag 的值}else{echo "<p>sorry!</p>";  // 如果 $ac 与 $f 不相等,则输出“sorry!”}
}?>通过get方式传入,$ac和$fn相等才能返回flag
此题的关键点在于file_get_contents()函数,此函数可以通过伪协议进行绕过
2.常见的伪协议:
- php://
        php://input: 允许访问请求的原始数据(POST 请求)
         php://filter: 允许对文件内容进行流式过滤
- data://
允许将数据嵌入到 URL 中,通常用于内联数据( GET请求)
- zip://
- bzip2://
用于访问压缩文件中的内容
3.选取伪协议,构造新的url:
data://

