这里主要记录一下闯关时学到的知识点。
一、文件名以“-”开头的文件
查看文件名以“-”开头的文件需要用绝对路径查看:
cat /.../.../-passwd.txt
二、文件名含空格
文件名包含空格的话,查看文件时需要用引号(“”)或 转义符(\)包裹
cat "spaces in the filename" #或 cat spaces\ in\ the\ filename
三、查找文件(find)
全局查找属主为bandit7,属组为bandit6,大小为33字节的文件
find / -user bandit7 -group bandit6 -type f -size 33c
四、base64编码
Base64 是一种基于 64 个可打印字符的二进制到文本的编码方式。
- 本质:它不是加密,也不是压缩,只是把 “机器能看懂的二进制数据” 转换成 “人类 / 文本协议能处理的字符数据”。
- 核心目的:解决二进制数据(比如图片、音频、特殊字符)在文本协议(比如 HTTP、邮件)中传输时的乱码、丢失问题。
base64编码:
#编码字符串
echo -n "hello, shell" | base64 #这里-n的作用是避免字串后面自动添加\n,影响解码
#编码文件内容
base64 data.txt
base64解码:
#解码字符串
echo -n "aGVsbG8sIHNoZWxs" | base64 -d
#解码文件内容
base64 -d data.txt
五、ROT13转换
ROT13 全称是 Rotate by 13 places,意思是 “把字母轮换 13 个位置”:
- 对于英文字母(a-z/A-Z),每个字母都被替换成字母表中往后数 13 位的字母;
- 因为英文字母共 26 个,13 正好是 26 的一半,所以 加密和解密是同一个操作(对加密后的文本再做一次 ROT13 就能还原);
- 数字、符号、空格等非字母字符保持不变。
法1:用tr命令(translate转换)
tr "a-zA-Z" "n-za-mN-ZA-M" < data.txt
#或
cat data.txt | tr "a-zA-Z" "n-za-mN-ZA-M"
法2:用sed命令
# 修改文件并备份原文件(推荐,原文件会保存为 data.txt.bak)
sed -i.bak 'y/A-Za-z/N-ZA-Mn-za-m/' data.txt
六、多种方式反复压缩
1.zip压缩和unzip解压缩
zip压缩基础语法:
zip [选项] 压缩包文件名.zip 要压缩的文件或目录

zip data.zip data.txt
# 执行后会生成 data.zip,原文件 data.txt 保留(zip 不会删除源文件)
unzip解压缩基础语法:
unzip [选项] 压缩包名.zip

unzip data.zip
#解压data.zip文件中的内容到当前目录。
2.gzip和gunzip
gzip 是压缩命令,gunzip 是解压命令(本质是 gzip -d),只能压缩单个文件(压缩目录需先 tar 打包)。
gzip基础语法:
gzip [选项] 要压缩的文件
#基础压缩
gzip data.txt #生成data.txt.gz文件,删除原文件data.txt
#压缩后保留文件
gzip -c data.txt > data.txt.gz # -c 输出到stdout,重定向保存。原文件data.txt保存
#指定压缩比(-1 最快,-9 压缩比最高,默认 -6)
gzip -9 data.txt #生成data.txt.gz文件
gunzip基础语法:
gunzip [选项] 压缩包名.gz
#基础解压
gunzip data.txt.gz #生成data.txt文件,原文件data.txt.gz删除
#解压后保留原文件
gunzip -c data.txt.gz > data.txt #原文件data.txt.gz被保存
#无后缀强制解压
gunzip -f data #强制解压,即使后缀没有.gz
查看.gz 文件内容(不解压):zcat file.txt.gz(直接看压缩文件里的文本)。
3.bzip2和bunzip2
bzip2基础语法:
bzip2 [选项] 要压缩的文件
# 场景1:基础压缩(生成 file.txt.bz2,原文件被删)
bzip2 file.txt
# 场景2:压缩后保留原文件(-c 重定向)
bzip2 -c file.txt > file.txt.bz2
# 场景3:最高压缩比(-9)
bzip2 -9 file.txt
bunzip2基础语法:
bunzip2 [选项] 压缩包.bz2
# 场景1:基础解压(生成 file.txt,原.bz2 文件被删)
bunzip2 file.txt.bz2
# 等价写法:bzip2 -d file.txt.bz2
# 场景2:解压后保留原压缩包
bunzip2 -c file.txt.bz2 > file.txt
# 场景3:强制解压无后缀的.bz2文件(Bandit 中文件丢后缀)
bunzip2 -f data # 即使文件没有.bz2后缀,强制解压
查看.bz2 文件内容(不解压):bzcat file.txt.bz2
3.tar打包
tar 本身是 “打包工具”(把多个文件 / 目录打成一个.tar 文件),但可通过 -z(调用 gzip)、-j(调用 bzip2)、-J(调用 xz)实现 “打包 + 压缩”,是 Linux 处理目录压缩的首选(Bandit 中嵌套压缩必用)。
tar基础语法:
# 压缩(打包+压缩):c=创建,v=显示过程,f=指定文件名,z/j=压缩格式,P=不剥离根目录
tar -[zjJ]cvf 压缩包名.tar.gz或.tar.bz2 要打包压缩的文件/目录名
# 解压缩(解压+解包):x=提取,v=显示过程,f=指定文件名,z/j=压缩格式,P=不剥离根目录
tar -[zjJ]xvf 压缩包名.tar.gz或.tar.bz2 -C 指定目录


Comments NOTHING