bandit闯关记录

Bandit–边玩边学Linux操作,网站:https://overthewire.org/wargames/bandit/。还是一名新手,错误之处欢迎指正。

Level 0

题目:使用SSH进入bandit,服务器ip地址bandit.labs.overthewire.org,端口2220,用户名和密码都是bandit0。

ssh -p port username@remote,使用ssh命令连接到练习服务器上。

在Xshell上建立一个new session,输入题目给的信息即可进入。

在这里插入图片描述

Level 0—Level 1

Level goal:密码储存在家目录下的readme文件中,通过SSH命令使用该密码登入Level1。

使用ls显示当前目录下的文件,发现readme文件,cat查看文件内容。

bandit0@bandit:~$ ls
readme
bandit0@bandit:~$ cat readme
boJ9jbbUNNfktd78OOpsqOltutMc3MY1

密码:boJ9jbbUNNfktd78OOpsqOltutMc3MY1

Level 1—Level 2

Level goal:下一关的密码储存在家目录下的‘-’文件中。

ls查看当前目录下的文件,对于以“-”命名的文件不能直接用cat命令,需加上合适的前缀,如./-FILENAME。

bandit1@bandit:~$ ls
-
bandit1@bandit:~$ cat ./-
CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

密码:CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

Level 2—Level 3

Level goal:密码储存在“spaces in this filename”文件中。

文件名中含有空格,可以用双引号将文件名括起来或者使用“\”将空格转义。

bandit2@bandit:~$ ls
spaces in this filename
bandit2@bandit:~$ cat "spaces in this filename" 
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
bandit2@bandit:~$ cat spaces\ in\ this\ filename 
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

密码:UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

Level 3—Level 4

Level goal:密码储存在inhere目录下的隐藏文件中。

使用ls -al命令查看包含隐藏文件在内的所有文件,直接cat该文件。

bandit3@bandit:~$ cd inhere/
bandit3@bandit:~/inhere$ ls -al
total 12
drwxr-xr-x 2 root    root    4096 Oct 16  2018 .
drwxr-xr-x 3 root    root    4096 Oct 16  2018 ..
-rw-r----- 1 bandit4 bandit3   33 Oct 16  2018 .hidden
bandit3@bandit:~/inhere$ cat .hidden 
pIwrPrtPN36QITSp3EQaw936yaFoFgAB

密码:pIwrPrtPN36QITSp3EQaw936yaFoFgAB

Level 4—Level 5

Level goal:密码储存在inhere目录下的一个文件中(人类可读)

使用file命令查看当前目录下所有文件的类型,其中-file07是以ASCII格式编码,是我们要找的文件。

bandit4@bandit:~$ cd inhere/
bandit4@bandit:~/inhere$ file ./-file0*
./-file00: data
./-file01: data
./-file02: data
./-file03: data
./-file04: data
./-file05: data
./-file06: data
./-file07: ASCII text
./-file08: data
./-file09: data
bandit4@bandit:~/inhere$ cat ./-file07
koReBOKuIDDepwhWk7jZC0RTdopnAYKh

密码:koReBOKuIDDepwhWk7jZC0RTdopnAYKh

Level 5—Level 6

Level goal:密码储存在inhere目录下的一个人类可读、1033字节大小、无操作权限的文件中。

使用find命令,其中.表示当前目录即其子目录,-type f查找普通文件,-size 1033c查找1033字节大小。

bandit5@bandit:~$ cd inhere
bandit5@bandit:~/inhere$ find . -type f -size 1033c
./maybehere07/.file2
bandit5@bandit:~/inhere$ cat ./maybehere07/.file2
DXjZPULLxYr17uwoI01bNLQbtFemEgo7

密码:DXjZPULLxYr17uwoI01bNLQbtFemEgo7

Level 6—Level 7

Level goal:密码储存在服务器的某一个文件中,该文件具有如下属性:owned by user bandit7、owned by group bandit6、33 bytes in size。

继续使用find命令,“2”表示标准错误,“/dev/null”是dev/下的一个特殊文件,这个文件接受的所有数据都会被丢弃。“2>/dev/null”表示将错误的输出信息丢弃。

bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
/var/lib/dpkg/info/bandit7.password
bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

密码:HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

Level 7—Level 8

Level goal:密码储存在data.txt文件中的单词millionth旁边。

直接grep。

bandit7@bandit:~$ grep "millionth" data.txt 
millionth cvX2JJa4CFALtqS87jk27qwqGhBM9plV

密码:cvX2JJa4CFALtqS87jk27qwqGhBM9plV

Level 8—Level 9

Level goal:密码储存在data.txt中,并且是该文件中唯一只出现一次的行。

uniq -u显示只出现过一次的行,但当重复的行并不相邻时,uniq 命令是不起作用的。所以使用sort对data.txt文件以默认方式(ASCII)进行排序。“|”将上一条命令的输出作为下一条命令的输入。

bandit8@bandit:~$ sort data.txt | uniq -u
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

密码:UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

Level 9—Level 10

Level goal:密码储存在data.txt中,以几个“=”字符开头,是文件中少数的人类可读字符串。

strings 命令在文件中查找可打印的字符串。

bandit9@bandit:~$ strings data.txt | grep "====*"
2========== the
========== password
========== isa
========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

密码:truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

Level 10—Level 11

Level goal:密码储存在包含base64编码数据的data.txt文件中。

base64 -d 解码数据。

bandit10@bandit:~$ cat data.txt 
VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg==
bandit10@bandit:~$ base64 -d data.txt 
The password is IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

密码:IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

Level 11—Level 12

Level goal:密码储存在data.txt文件中,该文件所有的大小写字母都被回转了13个位置(rotated by 13 positions)

(百度百科)ROT13是一种简易的替换式密码,套用ROT13到一段文字上仅仅只需要检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。

tr命令用于转换文件中的字符。

bandit11@bandit:~$ cat data.txt | tr [a-zA-Z] [n-za-mN-ZA-M]
The password is 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu

密码:5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu

Level 11—Level 12

Level goal:密码储存在一个被反复压缩的以十六进制存储的data.txt文件中,这关可能需要在/tmp下创建一个目录。

因为data.txt文件以十六进制格式存储,使用xxd将文件转化为二进制。

bandit12@bandit:xxd -r data.txt > data

使用file查看data文件,发现是一个gzip压缩文件,将data重命名data.gz,使用gunzip命令解压缩。

bandit12@bandit:/tmp/data_13$ file data
data: gzip compressed data, was "data2.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix
bandit12@bandit:/tmp/data_13$ mv data data.gz
bandit12@bandit:/tmp/data_13$ gunzip data.gz

继续查看解压缩后的文件,发现是一个bzip2压缩文件,重复上述操作。

bandit12@bandit:/tmp/data_13$ file data
data: bzip2 compressed data, block size = 900k
bandit12@bandit:/tmp/data_13$ mv data.gz2 data.bz2
bandit12@bandit:/tmp/data_13$ bzip2 -d data.bz2
bandit12@bandit:/tmp/data_13$ file data
data: gzip compressed data, was "data4.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix
bandit12@bandit:/tmp/data_13$ mv data data.gz
bandit12@bandit:/tmp/data_13$ gunzip data.gz
bandit12@bandit:/tmp/data_13$ file data
data: POSIX tar archive (GNU)
bandit12@bandit:/tmp/data_13$ mv data data.tar

重复操作直到:

bandit12@bandit:/tmp/data_13$ file data8.bin
data8.bin: gzip compressed data, was "data9.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix
bandit12@bandit:/tmp/data_13$ mv data8.bin data8.gz
bandit12@bandit:/tmp/data_13$ gunzip data8.gz
bandit12@bandit:/tmp/data_13$ cat data8
The password is 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

密码:8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

你可能感兴趣的:(linux,shell)