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 | cd inhere/ |
Key
koReBOKuIDDepwhWk7jZC0RTdopnAYKh
Level 5 → Level 6
Solution
和上一题一样通过文件属性进行查找,用到find指令,只需要通过文件大小就能够确定文件位置了
Code
1 | cd inhere/ |
Key
DXjZPULLxYr17uwoI01bNLQbtFemEgo7
Level 6 → Level 7
Solution
考察使用find指令查找文件,用到了-user、-group、-size参数。同时使用 /dev/null 来过滤多余的错误信息
Code
1 | find / -user bandit7 -group bandit6 -size 33c 2>/dev/null |
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 | xxd -r data.txt data2 |
Key
8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL
Level 13 → Level 14
Solution
给出的是bandit14的私钥,要求使用这个私钥登录bandit14获取Key,这里用到了ssh -i 指令
Code
1 | cd /etc/bandit_pass/bandit14 |
Key
4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
#Bandit Level 14 → Level 15