黑客笔记07:wargames信息安全靶场Bandit通关攻略,共34关(1-17)

1,461 阅读5分钟

Bandit靶场网址:overthewire.org/wargames/ba…

Bandit Level 0

这个关卡的目标是让你使用SSH登录游戏。您需要连接的主机是bandit.labs.overthewire.org,端口为2220。用户名是bandit0,密码是bandit0。登录后,转到1级页面,了解如何击败1级。

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

密码是bandit0

成功登录

Bandit Level 0 → Level 1

下一级的密码存储在主目录中名为readme文件的文件中。使用此密码通过SSH登录bandit1。每当你找到一个关卡的密码时,使用SSH(在端口2220上)登录到该关卡并继续游戏。

bandit0@bandit:~$ ls

readme

bandit0@bandit:~$ cat readme

NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL

ssh -p 2220 bandit1@bandit.labs.overthewire.org

密码NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL

Bandit Level 1 → Level 2

下一级的密码存储在主目录中名为-的文件中。

1692343283684.png

bandit1@bandit:~$ pwd

/home/bandit1

bandit1@bandit:~$ cat ./-【使用相对路径访问文件】

rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi

ssh -p 2220 bandit2@bandit.labs.overthewire.org

密码rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi

Bandit Level 2 → Level 3

下一级的密码存储在一个名为spaces的文件中,该文件名位于主目录中。

bandit2@bandit:~$ ls

spaces in this filename

bandit2@bandit:~$ cat spaces\ in\ this\ filename【使用反斜杠转义空格】

aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG

ssh -p 2220 bandit3@bandit.labs.overthewire.org

密码aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG

Bandit Level 3 → Level 4

下一级的密码存储在inhere目录的隐藏文件中。

bandit3@bandit:~$ ls

inhere

bandit3@bandit:~$ cd inhere

bandit3@bandit:~/inhere$ ls -al

total 12

drwxr-xr-x 2 root root 4096 Apr 23 18:04 .

drwxr-xr-x 3 root root 4096 Apr 23 18:04 ..

-rw-r----- 1 bandit4 bandit3 33 Apr 23 18:04 .hidden

bandit3@bandit:~/inhere$ cat ./.hidden【访问隐藏文件】

2EW7BBsr6aMMoJ2HjW067dm8EgX26xNe

ssh -p 2220 bandit4@bandit.labs.overthewire.org

密码2EW7BBsr6aMMoJ2HjW067dm8EgX26xNe

Bandit Level 4 → Level 5

下一级的密码存储在inhere目录中唯一可读的文件中。提示:如果你的终端出了问题,试试“reset”命令。

bandit4@bandit:~$ ls

inhere

bandit4@bandit:~$ cd inhere

bandit4@bandit:~/inhere$ ls

-file00 -file01 -file02 -file03 -file04 -file05 -file06 -file07 -file08 -file09

1692344490268.png

bandit4@bandit:~/inhere$ cat ./-file07【file命令可以查看文件属性】

lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR

ssh -p 2220 bandit5@bandit.labs.overthewire.org

密码lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR

Bandit Level 5 → Level 6

下一级的密码存储在inhere目录下的某个文件中,并具有以下所有属性:人类可读的、大小为1033字节、不可执行。

bandit5@bandit:~$ ls

inhere

bandit5@bandit:~$ cd inhere

1692345385529.png

bandit5@bandit:~/inhere$ find . -type f -size 1033c

./maybehere07/.file2

bandit5@bandit:~/inhere$ cat ./maybehere07/.file2

P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU

ssh -p 2220 bandit6@bandit.labs.overthewire.org

密码P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU

Bandit Level 6 → Level 7

下一级别的密码存储在服务器上的某个位置,并具有以下所有属性:属于用户bandit7、属于组bandit6、33 bytes in size。

find / -user bandit7 -group bandit6 -size 33c

1692345747615.png

bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password

z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S

ssh -p 2220 bandit7@bandit.labs.overthewire.org

密码z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S

Bandit Level 7 → Level 8

下一级别的密码存储在文件data.txt中单词millionth的旁边。

bandit7@bandit:~$ ls

data.txt

bandit7@bandit:~$ cat ./data.txt | grep millionth

millionth TESKZC0XvTetK0S9xNwm25STk5iWrBvP

ssh -p 2220 bandit8@bandit.labs.overthewire.org

密码TESKZC0XvTetK0S9xNwm25STk5iWrBvP

Bandit Level 8 → Level 9

下一级别的密码存储在文件data.txt中,并且是唯一只出现一次的文本行。

bandit8@bandit:~$ ls

data.txt

bandit8@bandit:~$ sort ./data.txt | uniq -u【仅显示一次的行】

EN632PlfYiZbn3PhVK3XOGSlNInNE00t

ssh -p 2220 bandit9@bandit.labs.overthewire.org

密码EN632PlfYiZbn3PhVK3XOGSlNInNE00t

Bandit Level 9 → Level 10

下一个级别的密码存储在文件data.txt中,它是少数几个人类可读的字符串之一,前面有几个'='字符。

bandit9@bandit:~$ strings ./data.txt【strings可以从对象文件和二进制文件中读取人类可读内容】

1692346841027.png

G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s

ssh -p 2220 bandit10@bandit.labs.overthewire.org

密码G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s

Bandit Level 10 → Level 11

下一级的密码存储在data.txt文件中,其中包含base64编码的数据。

bandit10@bandit:~$ ls

data.txt

bandit10@bandit:~$ cat data.txt

VGhlIHBhc3N3b3JkIGlzIDZ6UGV6aUxkUjJSS05kTllGTmI2blZDS3pwaGxYSEJNCg==

bandit10@bandit:~$ base64 -d ./data.txt

The password is 6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM

ssh -p 2220 bandit11@bandit.labs.overthewire.org

密码6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM

Bandit Level 11 → Level 12

下一级别的密码存储在data.txt文件中,其中所有小写(a-z)和大写(A-Z)字母都已旋转了13个位置。

bandit11@bandit:~$ ls

data.txt

bandit11@bandit:~$ cat data.txt

Gur cnffjbeq vf WIAOOSFzMjXXBC0KoSKBbJ8puQm5lIEi

bandit11@bandit:~$ cat data.txt | tr 'a-zA-Z' 'n-za-mN-ZA-M'【ROT13加密问题】

The password is JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv

ssh -p 2220 bandit12@bandit.labs.overthewire.org

密码JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv

Bandit Level 12 → Level 13

下一个级别的密码存储在文件data.txt中,该文件是一个经过反复压缩的文件的十六进制转储。对于这个级别,在/tmp下创建一个目录可能很有用,您可以在其中使用mkdir。举例来说:mkdir /tmp/myname123。然后使用cp复制数据文件,并使用mv重命名它(阅读手册页!)

1692347805233.png

bandit12@bandit:~$ mkdir /tmp/bandit12

bandit12@bandit:~$ cp ./data.txt /tmp/bandit12/data【去掉txt后缀】

bandit12@bandit:~$ cd /tmp/bandit12

bandit12@bandit:/tmp/bandit12$ ls

data

bandit12@bandit:/tmp/bandit12$ file data

data: ASCII text

bandit12@bandit:/tmp/bandit12$ xxd -r ./data ./data.out【16进制转2进制,out为2进制后缀】

bandit12@bandit:/tmp/bandit12$ ls

data data.out

bandit12@bandit:/tmp/bandit12$ file data.out

data.out: gzip compressed data, was "data2.bin", last modified: Sun Apr 23 18:04:23 2023, max compression, from Unix, original size modulo 2^32 581

bandit12@bandit:/tmp/bandit12$ mv data.out ./data.gz

bandit12@bandit:/tmp/bandit12$ ls

data data.gz

bandit12@bandit:/tmp/bandit12$ gzip -d ./data.gz ./data.out

bandit12@bandit:/tmp/bandit12$ file data

data: bzip2 compressed data, block size = 900k

bandit12@bandit:/tmp/bandit12$ mv ./data ./data.bz2

bandit12@bandit:/tmp/bandit12$ file data

data: gzip compressed data, was "data4.bin", last modified: Sun Apr 23 18:04:23 2023, max compression, from Unix, original size modulo 2^32 20480

bandit12@bandit:/tmp/bandit12$ mv ./data ./data.gz

bandit12@bandit:/tmp/bandit12$ gzip -d data.gz

bandit12@bandit:/tmp/bandit12$ ls

data

bandit12@bandit:/tmp/bandit12$ file data

data: POSIX tar archive (GNU)

bandit12@bandit:/tmp/bandit12$ mv data data.tar

bandit12@bandit:/tmp/bandit12$ tar xvf data.tar

data5.bin

bandit12@bandit:/tmp/bandit12$ file data5.bin

data5.bin: POSIX tar archive (GNU)

bandit12@bandit:/tmp/bandit12$ ls

data5.bin data.tar

bandit12@bandit:/tmp/bandit12$ rm data.tar

bandit12@bandit:/tmp/bandit12$ mv data5.bin data.tar

bandit12@bandit:/tmp/bandit12$ tar xvf data.tar

data6.bin

bandit12@bandit:/tmp/bandit12$ mv data6.bin data.tar

bandit12@bandit:/tmp/bandit12$ tar xvf data.tar

data8.bin

bandit12@bandit:/tmp/bandit12$ file data8.bin

data8.bin: gzip compressed data, was "data9.bin", last modified: Sun Apr 23 18:04:23 2023, max compression, from Unix, original size modulo 2^32 49

bandit12@bandit:/tmp/bandit12$ zcat data8.bin

The password is wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw

【如果遇到file的结果是gzip compressed data, was "xxx.bin"这种提示的时候,可以使用zcat提取内容】

ssh -p 2220 bandit13@bandit.labs.overthewire.org

密码wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw

Bandit Level 13 → Level 14

下一级的密码存储在/etc/bandit_pass/bandit14中,只能由用户bandit14读取。对于这个级别,您不会获得下一个密码,但是您会获得一个私有SSH密钥,该密钥可用于登录到下一个级别。注意:localhost是一个主机名,它指的是您正在使用的机器。

bandit13@bandit:~$ ssh -p 2220 -i ./sshkey.private bandit14@localhost

bandit14@bandit:~$ cat /etc/bandit_pass/bandit14

fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq

Bandit Level 14 → Level 15

通过将当前级别的密码提交到localhost上的端口30000,可以检索下一级别的密码。

bandit14@bandit:~$ nc localhost 30000【借助nc发送密码】

fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq

Correct!

jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt

1692353101156.png

bandit14@bandit:~$ telnet -l bandit15 localhost 30000

1692353203736.png

ssh -p 2220 bandit15@bandit.labs.overthewire.org

密码jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt

Bandit Level 15 → Level 16

通过使用SSL加密将当前级别的密码提交到localhost上的端口30001,可以检索下一级别的密码。

有用提示:得到“HEARTBEATING”和“Read R BLOCK”?使用-ign_eof并阅读手册页中的“CONNECTED COMMANDS”部分。在'R'和'Q'旁边,'B'命令也适用于该命令的此版本。

bandit14@bandit:~$ openssl s_client -connect localhost:30001 -ign_eof

1692353640692.png

密码JQttfApK4SeyHwDlI9SXGR50qclOAil1

ssh -p 2220 bandit16@bandit.labs.overthewire.org

密码JQttfApK4SeyHwDlI9SXGR50qclOAil1

Bandit Level 16 → Level 17

通过将当前级别的密码提交到localhost上31000到32000范围内的端口,可以检索下一级别的凭据。首先找出这些端口中的哪些端口上有服务器侦听。然后找出哪些人说SSL,哪些人不。只有一台服务器会给予下一个凭证,其他服务器会简单地将您发送的任何内容发送回给您。

bandit16@bandit:~$ nmap -sV localhost -p 31000-32000

Starting Nmap 7.80 ( nmap.org ) at 2023-08-18 10:20 UTC

PORT STATE SERVICE VERSION

31046/tcp open echo

31518/tcp open ssl/echo

31691/tcp open echo

31790/tcp open ssl/unknown

31960/tcp open echo

bandit16@bandit:~$ openssl s_client -connect localhost:31790 -ign_eof

1692354441586.png

sshkey.private的样式

1692354999348.png

vim中ESC后输入%d可以删除全文

mkdir /tmp/aaa

在/tmp/aaa中创建sshkey.private【复制sshkey的时候从空行处开始复制,避免格式出问题】

chmod 600 sshkey.private

bandit16@bandit:/tmp/aaa$ ssh -p 2220 -i ./sshkey.private bandit17@localhost

bandit17@bandit:~$ cat /etc/bandit_pass/bandit17

VwOSWtCA7lRKkTfbr2IDh6awj9RNZM5e