Bandit 通关题解

Bandit 是一个适合学习Linux指令的游戏吧,规则是每一关利用提供的hostname:port和上一关的password(第一关提供password)通过ssh进入到给定的环境中,按照题目要求拿到指定的Key作为下一关的password。挺好玩的,目前尚未通关,在此挖个坑

网址:http://overthewire.org/wargames/bandit/

通过

1
ssh bandit0@bandit.labs.overthewire.org -p 2220

开玩吧!

Level 0 → Level 1

Code

1
cat readme

Key

boJ9jbbUNNfktd78OOpsqOltutMc3MY1

Level 1 → Level 2

Solution

在Linux中含有特殊字符的文件名可能和shell的一些语法向冲突,比如这一道题目中的“-”,shell就认定其之后的内容为参数。所以我们要通过./-表示文件来消除这种歧义。

Code

1
cat ./-

Key

CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

Level 2 → Level 3

Solution

文件名中含有空格可以用反斜杠+空格表示

Code

1
cat spaces\ in\ this\ filename

Key

UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

Level 3 → Level 4

Code

1
cat inhere/.inhere

Key

pIwrPrtPN36QITSp3EQaw936yaFoFgAB

Level 4 → Level 5

Solution

通过file 列出文件属性来查看那些文件是ASCII编码(人类可读的)

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd inhere/
file ./*

./-file00: data
./-file01: data
./-file02: data
./-file03: data
./-file04: data
./-file05: data
./-file06: data
./-file07: ASCII text
./-file08: data
./-file09: data

cat ./-file07

Key

koReBOKuIDDepwhWk7jZC0RTdopnAYKh

Level 5 → Level 6

Solution

和上一题一样通过文件属性进行查找,用到find指令,只需要通过文件大小就能够确定文件位置了

Code

1
2
3
4
5
6
cd inhere/
find . -size 1033c

./maybehere07/.file2

cat ./maybehere07/.file2

Key

DXjZPULLxYr17uwoI01bNLQbtFemEgo7

Level 6 → Level 7

Solution

考察使用find指令查找文件,用到了-user、-group、-size参数。同时使用 /dev/null 来过滤多余的错误信息

Code

1
2
3
find / -user bandit7 -group bandit6 -size 33c 2>/dev/null

cat /var/lib/dpkg/info/bandit7.password

Key

HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

Level 7 → Level 8

Solution

使用grep指令在文件中查找指定字符串

Code

1
grep millionth ./data.txt

Key

cvX2JJa4CFALtqS87jk27qwqGhBM9plV

Level 8 → Level 9

Solution

uniq 指令能够找出文件中相邻的重复的或者不重复的行,key是所给的文件中只出现一次的行,所以要先进行排序,然后再用uniq找出不重复的行

Code

1
sort data.txt | uniq -u

Key

UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

Level 9 → Level 10

Solution

strings 指令能够找出所给文件中可以打印的字符串,然后再使用grep查找key所在的位置

Code

1
strings data.txt | grep ==

Key

truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

Level 10 → Level 11

Solution

使用base64指令对以base64编码的文本进行解码

Code

1
cat data.txt | base64 --decode

Key

IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

Level 11 → Level 12

Solution

所给的文本中的字符都被旋转了13个位置,所以我们使用tr命令将这些字符全部旋转回来

Code

1
cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'

Key

5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu

Level 12 → Level 13

Solution

所给的文件是一个经过多重压缩以后的二进制文件,首先使用xxd指令将二进制文件进行反转。然后不断使用file指令得到文件信息再调用相应的解压缩指令进行解压缩。其中用到的压缩指令有:gzip、bzip2、tar

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
xxd -r data.txt data2
file data2
data2: gzip compressed data, was "data2.bin", from Unix, last modified: Thu Jun 6 13:59:44 2013, max compression
mv data2 data.gz
gzip -d data.gz
file data
data: bzip2 compressed data, block size = 900k
bzip2 -d data
bzip2: Can't guess original name for data -- using data.out
file data.out
data.out: gzip compressed data, was "data4.bin", from Unix, last modified: Thu Jun 6 13:59:43 2013, max compression
zcat data.out > data3
file data3
data3: POSIX tar archive (GNU)
tar -xvf data3
data5.bin
file data5.bin
data5.bin: POSIX tar archive (GNU)
tar -xvf data5.bin
data6.bin
file data6.bin
bzip2 -d data6.bin
bzip2: Can't guess original name for data6.bin -- using data6.bin.out
file data6.bin.out
data6.bin.out: POSIX tar archive (GNU)
tar -xvf data6.bin.out
data8.bin
file data8.bin
data8.bin: gzip compressed data, was "data9.bin", from Unix, last modified: Thu Jun 6 13:59:43 2013, max compression
zcat data8.bin > data9.bin
file data9.bin
data9.bin: ASCII text
cat data9.bin
8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

Key

8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

Level 13 → Level 14

Solution

给出的是bandit14的私钥,要求使用这个私钥登录bandit14获取Key,这里用到了ssh -i 指令

Code

1
2
3
cd /etc/bandit_pass/bandit14
ssh -i sshkey.private bandit14@localhost
cat /etc/bandit_pass/bandit14

Key

4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e

#Bandit Level 14 → Level 15

Solution

Code

Key