土匪通关笔记(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: KBw: 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
关键点:
- 组合使用
sort和uniq命令 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: 解码字符串