OverTheWire:渐进式战争游戏学 Linux 安全

FreeGuideOnline 最新 2026-06-19

OverTheWire 挑战:渐进式战争游戏学 Linux 安全

什么是 OverTheWire?

OverTheWire 是一个由社区维护的免费在线平台,通过一系列精心设计的战争游戏(wargames)来帮助任何人学习并实践网络安全、Linux 命令行与系统管理技能。它的核心理念是“在实践中学习”,你将通过解决真实场景下的谜题来获取 flag,从而进阶到下一关。无论你是从未接触过命令行的纯新手,还是想巩固安全基础的开发者,OverTheWire 都能为你提供一条循序渐进的成长路径。


为什么选择 OverTheWire?

  • 完全免费:无需注册、无需付费,只需要一个 SSH 客户端即可开始。
  • 难度渐进:从最基础的 lscdcat 开始,逐渐深入到权限提升、密码破解、网络分析等高级主题。
  • 真实环境:每一关都是一个真实的 Linux 用户环境,你通过 SSH 登录到服务器,用所学知识寻找隐藏信息。
  • 覆盖全面:除了著名的 Bandit 系列,还有 Natas(Web 安全)、Leviathan(基础漏洞)、Krypton(密码学)等十余个系列,适合不同方向的学习者。

入门前准备

你只需要两样东西:

  1. 一个 SSH 客户端
    • Linux / macOS 系统已内置 ssh 命令,直接打开终端即可。
    • Windows 用户推荐使用 PowerShell(已附带 SSH)、Windows TerminalPuTTY
  2. 一颗主动探索的心 —— 遇到困难时,学会查阅 man 手册、搜索引擎以及 OverTheWire 官方社区的提示。

从 Bandit 开始:你的第一个战争游戏

Bandit 是 OverTheWire 为绝对初学者设计的 Linux 基础训练场。它包含 34 个递增关卡,每一关都需要你找到位于服务器某处的密码(flag),并用该密码登录下一关。

连接第一关 (Bandit Level 0)

打开终端,输入以下命令:

ssh bandit0@bandit.labs.overthewire.org -p 2220
  • 用户名:bandit0
  • 密码:bandit0
  • 端口:2220(OverTheWire 游戏服务器均使用此端口)

连接成功后,你会看到一条欢迎信息,现在你已经进入 Bandit Level 0 了。

提示:如果你遇到主机密钥验证提示,输入 yes 继续即可。


Bandit 前 5 关详解:快速掌握基础命令

下面我们将带你通过前 5 关,同时解释其中涉及的核心 Linux 概念。每关的 flag(密码)建议自己动手获取,这里仅给出思路与命令。

Level 0 → Level 1

目标:服务器上有一个名为 readme 的文件,里面存放着下一关的密码。

步骤

  1. 登录后,使用 ls 查看当前目录的文件:
    ls
    
  2. 输出中包含 readme,使用 cat 查看其内容:
    cat readme
    
  3. 屏幕上显示的字符串就是 Level 1 的密码。复制它,然后退出当前连接(exitCtrl+D),再使用新密码连接到 bandit1

学到什么

  • ls 列出目录内容。
  • cat 显示文件内容。
  • Linux 文件系统是分层结构,当前目录默认为用户的主目录。

Level 1 → Level 2

目标:密码存储在名为 - 的文件中。直接使用 cat - 无法正常工作,因为 - 被许多命令解释为标准输入。

步骤

  1. 使用 ls 确认文件存在。
  2. 用相对路径明确指定文件,防止歧义:
    cat ./-
    
    或者使用完整路径:
    cat /home/bandit1/-
    
  3. 获得密码。

学到什么

  • 对于以特殊字符(如 -)开头的文件名,需要通过路径前缀(.//home/...)明确这是一个文件,而不是命令选项。
  • 了解命令参数解析的常见陷阱。

Level 2 → Level 3

目标:密码在名为 spaces in this filename 的文件中。文件名包含空格。

步骤

  1. ls 列出文件,看到包含空格的文件名。
  2. 用引号将文件名括起来,或者用反斜杠转义空格:
    cat "spaces in this filename"
    
    或者:
    cat spaces\ in\ this\ filename
    
  3. 查看内容获取密码。

学到什么

  • Linux 文件名可以包含空格,但在命令行中需要转义或使用引号,否则会被当作多个参数。
  • 双引号和反斜杠的转义用法。

Level 3 → Level 4

目标:密码存储在 inhere 目录下的一个隐藏文件里。

步骤

  1. 进入 inhere 目录:
    cd inhere
    
  2. 使用 ls -a 列出所有文件(包括隐藏文件):
    ls -a
    
  3. 会看到一个以点(.)开头的文件,例如 .hidden。使用 cat .hidden 查看密码。

学到什么

  • cd 切换目录。
  • Linux 中以 . 开头的文件是隐藏文件,普通 ls 不显示,需要 -a 选项。
  • 常用连用 ls -la 可以看到隐藏文件及详细信息。

Level 4 → Level 5

目标inhere 目录下只有文件类型是人类可读(ASCII text)的文件存储了密码,其他文件是二进制或数据文件。

步骤

  1. 进入 inhere 目录。
  2. 使用 file 命令检查每个文件类型:
    file ./-*
    
    这里 ./-* 匹配所有以 - 开头的文件(该目录下的文件都叫 -file00 等)。
  3. 找到输出为 ASCII text 的文件,用 cat 查看:
    cat ./-file07   # 示例,根据实际结果替换
    

学到什么

  • file 命令可以识别文件类型,而不依赖扩展名。
  • 通配符 * 结合路径使用以批量处理特殊文件名。

继续 Bandit 旅程:你会获得的技能

完成前 5 关后,你已经掌握了命令行最基本的操作。Bandit 后续关卡会逐步引入以下技能:

关卡区间 主要学习内容
Level 6 – 10 find 命令查找文件,grep 文本搜索,sortuniq 数据处理
Level 11 – 15 Base64/ROT13 等简单编码,tr 字符转换,文件权限与 chmod
Level 16 – 20 网络端口扫描(nmap),SSL/TLS 连接(openssl s_client),ssh 私钥利用
Level 21 – 24 计划任务(cron),临时文件,shell 脚本分析
Level 25 – 30 git 仓库敏感信息泄露,命令注入,ltrace 追踪库调用等
Level 31 – 34 setuid 二进制利用,环境变量劫持,高级权限提升

每一关都在前一个基础上增加一点点难度,这种渐进式设计让你不会感到跳跃,同时又能不断积累解决真实问题的能力。


实用技巧与常见问题

1. 记住密码和自动登录

随着关卡增多,你会有多个密码需要记录。推荐在本地创建一个文本文件(例如 bandit_passwords.txt)按关卡顺序保存密码。也可以使用 sshpass 工具自动输入密码(但为了学习,前期建议手动操作)。

2. 善用 man--help

遇到不熟悉的命令,立刻查阅手册:

man find
find --help

甚至可以直接搜索引擎输入 linux find command examples,这是学习效率最高的方法。

3. 连接断开或超时?

OverTheWire 服务器会在一段时间不活动后断开连接。需要时重新 SSH 登录即可,进度不会丢失。

4. 严禁扫描或干扰其他玩家

所有战争游戏环境都是共享的,不要尝试提权到 root、攻击服务器或干扰其他用户。我们的唯一目标是找到当前级别的密码,进入下一关。


越过 Bandit:更多挑战系列

当你完成 Bandit 的全部 34 关后,你已经具备了一个初级 Linux 系统管理员或安全分析师的基础。OverTheWire 还有更多主题系列可以继续推进:

  • Natas:专注于 Web 安全,教你发现和利用 Web 应用漏洞。
  • Leviathan:小幅跳板,重温基础漏洞利用概念。
  • Krypton:密码学挑战,从古典密码到现代算法。
  • Narnia:基础二进制利用与 shellcode 入门。
  • Behemoth:中级二进制漏洞利用和逆向工程。

每个系列都有独立的服务器与端口,你可以在 OverTheWire 官网 找到完整列表与连接方式。


开启你的安全学习之路

OverTheWire 的战争游戏将枯燥的概念变成了一个个待解之谜,让你在获取 flag 的成就感中不断前进。不要害怕遇到困难,每个卡住的瞬间都是学习最深刻的时刻。当你在搜索引擎敲下问题时,你正在成为一名真正的 Linux 实践者。

现在就打开终端,连接 bandit0,迈出第一步吧:

ssh bandit0@bandit.labs.overthewire.org -p 2220

下一个密码,等着你来发现。