当我们打开靶场链接会发现这么一个界面
![[极客大挑战 2019]Secret File-1.png](/upload/%5B%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019%5DSecret%20File-1.png)
基本上没有什么信息,但是f12查看源代码会发现指向了Archive_room.php这个文件
![[极客大挑战 2019]Secret File-2.png](/upload/%5B%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019%5DSecret%20File-2.png)
我们点击访问,提示这样,我们点击访问
![[极客大挑战 2019]Secret File-3.png](/upload/%5B%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019%5DSecret%20File-3.png)
结果提示
![[极客大挑战 2019]Secret File-4.png](/upload/%5B%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019%5DSecret%20File-4.png)
当我们把鼠标放到secret这个按钮上的时候发现,浏览器左下角明明是action.php,但是访问完就成了end.php,那应该是直接自动跳转了,所以我们直接上burpsuite
把secret的包发送到repeate模块,可以发现响应包有一个secr3t.php,访问后发现了页面的源码
![[极客大挑战 2019]Secret File-5.png](/upload/%5B%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019%5DSecret%20File-5.png)
<html>
<title>secret</title>
<meta charset="UTF-8">
<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag放在了flag.php里
?>
</html>从代码上看,我们应该是要传入file参数,然后使用php伪协议读取flag.php才可以获取到flag,而且好像还过滤掉了php://data和php://input,所以我们使用?file=php://filter/read=convert.base64-encode/resource=flag.php来获取,执行完发现出现了base64编码
![[极客大挑战 2019]Secret File-6.png](/upload/%5B%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019%5DSecret%20File-6.png)
解码后得到flag
![[极客大挑战 2019]Secret File-7.png](/upload/%5B%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019%5DSecret%20File-7.png)