土匪通关笔记(Level0—— Level 11部分)
字数 1475 2025-08-15 21:32:50

Bandit 通关笔记教学文档 (Level 0 - Level 11)

Level 0 → Level 1

目标: 读取位于家目录下的README文件获取密码

解决方案:

bandit0@bandit:~$ cat README
boJ9jbbUNNfktd78OOpsqOltutMc3MY1

关键点:

  • 使用cat命令读取文件内容

Level 1 → Level 2

目标: 读取名为"-"的文件

解决方案:

bandit1@bandit:~$ cat ./-
CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

关键点:

  • 文件名是特殊字符"-",直接使用cat -会被解释为标准输入
  • 使用./-表示当前目录下的"-"文件

Level 2 → Level 3

目标: 读取包含空格的文件名"spaces in this filename"

解决方案:

bandit2@bandit:~$ cat spaces\ in\ this\ filename
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

关键点:

  • 文件名包含空格,需要使用转义字符\或引号包裹文件名
  • 替代方案:cat "spaces in this filename"

Level 3 → Level 4

目标: 查找隐藏文件获取密码

解决方案:

bandit3@bandit:~/inhere$ cat .hidden

关键点:

  • 隐藏文件以.开头,普通ls命令不显示
  • 使用ls -a查看所有文件(包括隐藏文件)

Level 4 → Level 5

目标: 在inhere目录下找到唯一的可读文件

解决方案:

bandit4@bandit:~/inhere$ file ./*
# 检查文件类型
bandit4@bandit:~/inhere$ cat ./-file07
koReBOKuIDDepwhWk7jZC0RTdopnAYKh

关键点:

  • 使用file命令检查文件类型
  • 查找人类可读的ASCII文本文件

Level 5 → Level 6

目标: 查找大小为1033字节的文件

解决方案:

bandit5@bandit:~/inhere$ find . -type f -size 1033c
./maybehere07/.file2
bandit5@bandit:~/inhere$ cat ./maybehere07/.file2
DXjZPULLxYr17uwoI01bNLQbtFemEgo7

关键点:

  • find命令参数:
    • -type f: 只查找普通文件
    • -size 1033c: 文件大小1033字节
    • c表示字节数,其他单位:
      • b: 512字节块
      • k: KB
      • w: 2字节

Level 6 → Level 7

目标: 查找属于bandit7用户和bandit6组且大小为33字节的文件

解决方案:

bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
/var/lib/dpkg/info/bandit7.password
bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

关键点:

  • find高级用法:
    • -user: 按文件所有者查找
    • -group: 按文件所属组查找
    • 2>/dev/null: 将错误输出重定向到空设备,避免权限错误干扰

Level 7 → Level 8

目标: 在data.txt中找到包含"millionth"的行

解决方案:

bandit7@bandit:~$ grep millionth data.txt
millionth       cvX2JJa4CFALtqS87jk27qwqGhBM9plV

关键点:

  • grep命令基本用法:grep pattern file
  • 输出匹配行的整行内容

Level 8 → Level 9

目标: 在data.txt中找到唯一出现的行

解决方案:

bandit8@bandit:~$ sort data.txt | uniq -u
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

关键点:

  • 组合使用sortuniq命令
  • uniq命令选项:
    • -u: 只输出唯一的行
    • -d: 只输出重复的行
    • -c: 统计每行出现次数
  • sort命令确保重复行相邻,这是uniq工作的前提

Level 9 → Level 10

目标: 在data.txt中找到可打印字符串中包含"===="的行

解决方案:

bandit9@bandit:~$ strings data.txt | grep ====
==the*2i"4
==password Z)is
&=truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

关键点:

  • strings命令:提取文件中的可打印字符串
  • 常用选项:
    • -a: 扫描整个文件(默认)
    • -n: 设置最小字符串长度(默认4)
    • -f: 在每个字符串前显示文件名

Level 10 → Level 11

目标: 解码base64编码的data.txt文件

解决方案:

bandit10@bandit:~$ base64 -d data.txt
The password is IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

关键点:

  • Base64编码特点:
    • 使用64个可打印字符表示二进制数据
    • 每6位对应一个字符
    • 3字节(24位)对应4个Base64字符
  • base64命令用法:
    • base64 file: 编码文件
    • base64 -d file: 解码文件
    • echo "str" | base64: 编码字符串
    • echo "str" | base64 -d: 解码字符串
Bandit 通关笔记教学文档 (Level 0 - Level 11) Level 0 → Level 1 目标 : 读取位于家目录下的README文件获取密码 解决方案 : 关键点 : 使用 cat 命令读取文件内容 Level 1 → Level 2 目标 : 读取名为"-"的文件 解决方案 : 关键点 : 文件名是特殊字符"-",直接使用 cat - 会被解释为标准输入 使用 ./- 表示当前目录下的"-"文件 Level 2 → Level 3 目标 : 读取包含空格的文件名"spaces in this filename" 解决方案 : 关键点 : 文件名包含空格,需要使用转义字符 \ 或引号包裹文件名 替代方案: cat "spaces in this filename" Level 3 → Level 4 目标 : 查找隐藏文件获取密码 解决方案 : 关键点 : 隐藏文件以 . 开头,普通 ls 命令不显示 使用 ls -a 查看所有文件(包括隐藏文件) Level 4 → Level 5 目标 : 在inhere目录下找到唯一的可读文件 解决方案 : 关键点 : 使用 file 命令检查文件类型 查找人类可读的ASCII文本文件 Level 5 → Level 6 目标 : 查找大小为1033字节的文件 解决方案 : 关键点 : find 命令参数: -type f : 只查找普通文件 -size 1033c : 文件大小1033字节 c 表示字节数,其他单位: b : 512字节块 k : KB w : 2字节 Level 6 → Level 7 目标 : 查找属于bandit7用户和bandit6组且大小为33字节的文件 解决方案 : 关键点 : find 高级用法: -user : 按文件所有者查找 -group : 按文件所属组查找 2>/dev/null : 将错误输出重定向到空设备,避免权限错误干扰 Level 7 → Level 8 目标 : 在data.txt中找到包含"millionth"的行 解决方案 : 关键点 : grep 命令基本用法: grep pattern file 输出匹配行的整行内容 Level 8 → Level 9 目标 : 在data.txt中找到唯一出现的行 解决方案 : 关键点 : 组合使用 sort 和 uniq 命令 uniq 命令选项: -u : 只输出唯一的行 -d : 只输出重复的行 -c : 统计每行出现次数 sort 命令确保重复行相邻,这是 uniq 工作的前提 Level 9 → Level 10 目标 : 在data.txt中找到可打印字符串中包含"===="的行 解决方案 : 关键点 : strings 命令:提取文件中的可打印字符串 常用选项: -a : 扫描整个文件(默认) -n : 设置最小字符串长度(默认4) -f : 在每个字符串前显示文件名 Level 10 → Level 11 目标 : 解码base64编码的data.txt文件 解决方案 : 关键点 : Base64编码特点: 使用64个可打印字符表示二进制数据 每6位对应一个字符 3字节(24位)对应4个Base64字符 base64 命令用法: base64 file : 编码文件 base64 -d file : 解码文件 echo "str" | base64 : 编码字符串 echo "str" | base64 -d : 解码字符串