目录
目录遍历
打开环境,点击开始寻找flag看看有什么东西
可以看到,这里给出了网站的部分目录,我们可以点击进行访问
首先我们要明白,访问网站就是访问其目录中的文件,例如我们看到的网站首页,一般都是位于网站/var/www/html目录下的index文件中。
可以这样理解,一个网站就是由各级目录和其中的文件组成的。这里我们既然可以访问目录,题目又是遍历目录,那么我们就来看看这些目录里面都有什么东西。经过逐个点开,可以发现文件夹1/ 2/ 3/ 4/ 中还各有一组1/ 2/ 3/ 4/文件夹,最终在3/ 文件夹下的1/ 中找到flag.txt。
也就是说,flag文件存放于....../3/1文件夹中,这也叫做路径,和Windows资源管理器原理一致。
本题完。
PHPINFO
`phpinfo()` 是一个非常有用的 PHP 内置函数,当你在浏览器中运行它时,它会输出当前服务器的 PHP 配置和环境的详细信息。这个函数展示了有关 PHP 安装的大量信息,包括:
- PHP 的版本信息。
- PHP 编译选项和扩展。
- 服务器信息和环境(如果是运行在web服务器上)。
- PHP 环境。
- OS 版本信息、路径和主要的 PHP 配置指令。
- HTTP 头信息。
- PHP 许可信息。
这对于调试和确保服务器配置正确非常有用。如果你想查看你的 PHP 安装的具体信息,可以创建一个包含以下代码的 `.php` 文件并在浏览器中访问它:
<?php
phpinfo();
?>
出于安全原因,不建议在生产环境中公开访问 `phpinfo()` 页面,因为它可能会暴露敏感信息,使服务器更容易受到攻击。在不需要时,应该删除或限制访问该文件。
这道题中,我们可以访问到phpinfo.php文件,按住组合键CTRL+F打开搜索功能搜索关键字flag{即可找到flag。
本题完。
备份文件下载
Web备份文件下载漏洞,通常是由于网站的备份文件没有得到适当的保护和管理,导致攻击者可以通过简单的URL访问或其他方法来下载这些文件。这些备份文件可能包含敏感信息,如源代码、数据库凭证、配置文件等,如果被获取则可能对网站的安全造成重大风险。
网站源码
当开发人员在线上环境中对源代码进行备份操作,并且错误地将备份文件放在了 web 目录下,可能导致网站源码泄露。Web 目录(或称为文档根目录)是公开的,任何人都可以通过浏览器访问其中的文件,除非有特定的服务器配置来阻止这种访问。
这种情况通常发生在以下情形中:
-
不恰当的备份位置:开发人员应该将备份文件存储在非公开目录中或者使用特定的访问控制,确保这些备份文件不可通过互联网访问。
-
不安全的备份命名约定:备份文件经常以容易预测的名称存储(例如,
backup.zip
,project_backup.tar.gz
,database.sql
等),这使得攻击者可以轻易猜测和访问这些文件。 -
缺乏服务器配置的安全性:服务器应配置适当的访问控制规则,以阻止对敏感目录和文件的访问。例如,通过
.htaccess
(对于Apache服务器)或其他服务器配置文件,可以禁止访问特定文件或目录。
既然这道题已经告诉我们是源码泄露,那么我们要做的事情就是找到备份的源码文件的路径,下载或者访问它,找到其中的flag。
这里给出了我们常见的网站源码备份文件名和后缀示例,我们当然可以直接在地址栏后面加上/文件名+后缀尝试访问,但是这样效率很低,还有一种办法,就是目录扫描。这里我们用到的工具是Kali Linux虚拟机上的diesearch目录扫描工具。
命令是
dirsearch -u [链接]
扫描出了一个www.zip压缩包,直接添加到链接后面,再到浏览器地址栏回车访问,这里自动开始下载www.zip到我们电脑上。
可以看到其中有一个flag_.......txt,我们直接打开看看。
但是这个文本文档中并没有flag,需要我们复制这个文本文档的名称,然后到网站中访问看看。
为什么下载下来的文件中没有flag,但在浏览器中访问同名文件会得到flag呢?
因为下载下来的压缩包是网站的备份文件,这就解释了为什么包里的 flag.txt
文件不包含实际的flag。这种情况在CTF挑战和现实世界的安全评估中都很常见,通常出于以下几个原因:
-
备份时机:备份文件通常是定期创建的快照,用于灾难恢复或数据恢复。这意味着备份的内容可能并不完全反映当前网站的最新状态。如果
flag.txt
在备份创建之后才被添加或修改,那么下载的备份文件中就不会包含最新的内容