overthewire_bandit系列

TJCcc 发布于 2026-01-27 23 次阅读


这里主要记录一下闯关时学到的知识点。

一、文件名以“-”开头的文件

查看文件名以“-”开头的文件需要用绝对路径查看:

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 指定目录

唯有极致沉淀,才能造就辉煌。
最后更新于 2026-01-27