Wargames — Bandit
Level 0
ssh -p 2220 bandit0@bandit.labs.overthewire.org
Level 0 → Level 1
cat readme
Level 1 → Level 2
cat ./-
输入cat - , - 会被当作参数前缀
Level 2 → Level 3
cat ./spaces\ in\ this\ filename
空格需要用转义字符形式"\ "表示。
或者可以利用Tab补全功能
Level 3 → Level 4
cd inhere
ls -a # -a 表示显示所有文件,包括隐藏文件
cat .hidden
Level 4 → Level 5
cd inhere
ls
file ./* # *代表匹配所有文件
cat ./-file07 # 只有-file07为可读的ASCII text类型
Level 5 → Level 6
cd inhere
find . -size 1033c ! -executable -exec file {} \;
cat ./maybehere07/.file2
Level 6 → Level 7
cd / # 回到服务器根目录
find . -user bandit7 -group bandit6 -size 33c 2>/dev/null
cat ./var/lib/dpkg/info/bandit7.password
find命令中2>/dev/null的作用是重定向“Permission denied”错误,使其不显示
Level 7 → Level 8
grep millionth data.txt # 在data.txt中查找包含"millionth"的行
Level 8 → Level 9
sort data.txt | uniq -u # 必须先排序再使用uniq,-u表示仅显示出一次的行
Level 9 → Level 10
strings data.txt | grep -E "=+" # 找出data.txt中包含“=”的可读字符串
可以根据密码长度做进一步筛选
strings data.txt | grep -E "=+.{20,}" # "="号后面至少有20个字符
Level 10 → Level 11
base64 -d data.txt
Level 11 → Level 12
cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' # Rot13对等加密
Level 12 → Level 13
# 复制data.txt到自己创建的临时文件夹/tmp/lmy
mkdir /tmp/lmy
cp data.txt /tmp/lmy/data.txt
cd /tmp/lmy
# 十六进制转为二进制
xxd -r data.txt data
接下来是漫长的解压过程:
# 解压流程:file查看类型,mv重命名,解压
# 第一次: gzip
file data # 查看文件类型,发现是gzip压缩文件
mv data data2.gz # 重命名为.gz文件
gzip -d data2.gz # gzip解压
# 第二次: bzip2
file data2
mv data2 data2.bz
bzip2 -d data2.bz
# 第三次:gzip
file data2
mv data2 data2.gz
gzip -d data2.gz
# 第四次:tar
file data2
mv data2 data2.tar
tar -xvf data2.tar
# 第五次:tar
file data5.bin
tar -xvf data5.bin
# 第六次:bzip2
file data6.bin
mv data6.bin data6.bz
bzip2 -d data6.bz
# 第七次:tar
file data6
mv data6 data6.tar
tar -xvf data6.tar
# 第八次:gzip
file data8.bin
mv data8.bin data8.gz
gzip -d data8.gz
# 终于得到ASCII文件
file data8
cat data8
# 最后记得删除临时文件夹
cd ..
rm -rf lmy
Level 13 → Level 14
cat sshkey.private
logout
复制密钥内容到本地文件中,同样命名为sshkey.private,使用ssh远程登录
ssh -i .\sshkey.private -p 2220 bandit14@bandit.labs.overthewire.org
可以查看下登录密码
cat /etc/bandit_pass/bandit
Level 14 → Level 15
cat /etc/bandit_pass/bandit | nc localhost 30000