BUUCTF 之 [ACTF2020 新生赛]Include

导读:本篇文章讲解 BUUCTF 之 [ACTF2020 新生赛]Include,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

BUUCTF 之 [ACTF2020 新生赛]Include

相关

项目 内容
难度 简单
类型 WEB
靶场 BUUCTF
坐标 [ACTF2020 新生赛]Include

题目

题解

案发现场

打开题目链接,首页中只有一个超链接。
超链接
点击 tips 后,出现了如下提示(你能找到其他的 flag 吗):

提示
仔细观察,可以发现:
点击超链接后,发送了一个 GET 请求

?file=flag.php

file 的值为 flag.php ,应该是一个 PHP 文件。
改造一下链接(访问 flag.php 页面):

http://f2c5e5cb-7a5b-4a4b-b41b-5d9c19f9ed68.node4.buuoj.cn:81/flag.php

访问 flag.php
可以发现,题目首页中的 tips 超链接指向的就是 flag.php 页面。

分析

  1. PHP 中若通过 require()、once_require() 或 include() 、once_include() 函数去包含另一个文件,该文件在网页中均是不可见的(即使你查看网页源代码)。
    查看网页源代码
  2. 页面提示,Can you find out the flag?

综上,可以发现 flag.php 页面通过 get 方式中的参数 file 来包含网站当前目录下的其他文件(如 flag.php),再加上提示 “你能找到其他 flag 吗?” ,我们可以推断,要解答该题目需要获取 flag.php 的源代码。

攻克

我们可以通过将包含的文件进行转码,让浏览器无法识别这是 PHP 代码,其也就无法执行该 PHP 文件,于是将文件中的内容直接显示出来,我们将通过 PHP 伪协议来完成这一动作。
使用 PHP 伪协议将网页源代码转换为 base64 编码的格式:

php://filter/read=convert.base64-encode/resource=flag.php

其中的 read 可以省略,但 resource 不能。
将此部分作为 GET 参数的值即可获得 flag,因此,构造的链接为:

http://f2c5e5cb-7a5b-4a4b-b41b-5d9c19f9ed68.node4.buuoj.cn:81/?file=php://filter/read=convert.base64-encode/resource=flag.php

我们由此获得了一段使用 base64 编码的 PHP 代码:

Base64 编码的 PHP 代码
在线解码 后,我们可以得到一段 PHP 代码,其中就包含了 flag。

包含 flag 的 PHP 代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84049.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!