OverTheWire - Bandit (0-10)
The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames. If you notice something essential is missing or have ideas for new levels, please let us know!
Note for beginners: First, if you know a command, but don’t know how to use it, try the manual (man page) by entering man <command>
. For example, man ls
to learn about the “ls” command. The “man” command also has a manual, try it! When using man, press q
to quit (you can also use / and n and N to search). Second, if there is no man page, the command might be a shell built-in. In that case use the help <X>
command, for example, help cd
.
Note for VMs: You may fail to connect to overthewire.org via SSH with a “broken pipe error” when the network adapter for the VM is configured to use NAT mode. Adding the setting IPQoS throughput to /etc/ssh/ssh_config
should resolve the issue. If this does not solve your issue, the only option then is to change the adapter to Bridged mode.
Level 0
The goal of this level is for you to log into the game using SSH. The host to which you need to connect is
bandit.labs.overthewire.org
, on port2220
. The username isbandit0
and the password isbandit0
:
1
2
$ ssh bandit0@bandit.labs.overthewire.org -p 2220
bandit0@bandit:~$
Level 0 → 1
The password for the next level is stored in a file called
readme
located in thehome
directory. Use this password to log intobandit1
using SSH. Whenever you find a password for a level, use SSH (on port 2220) to log into that level and continue the game.
1
2
3
4
5
6
7
$ ssh bandit0@bandit.labs.overthewire.org -p 2220
bandit0@bandit:~$ ls
readme
bandit0@bandit:~$ cat readme
NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL
Level 1 → 2
The password for the next level is stored in a file called
-
located in the home directory.
1
2
3
4
5
6
7
8
9
$ ssh bandit1@bandit.labs.overthewire.org -p 2220
# use absolute path
bandit1@bandit:~$ cat /home/bandit1/-
rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi
# OR, "hide" the dash from the command
bandit1@bandit:~$ cat ./-
rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi
Level 2 → 3
The password for the next level is stored in a file called
spaces in this filename
located in the home directory.
1
2
3
4
5
6
7
8
$ ssh bandit2@bandit.labs.overthewire.org -p 2220
bandit2@bandit:~$ cat "spaces in this filename"
aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG
# or use backslashes
bandit2@bandit:~$ cat spaces\ in\ this\ filename
aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG
Level 3 → 4
The password for the next level is stored in a hidden file in the
inhere
directory.
1
2
3
4
5
6
7
8
9
10
$ ssh bandit3@bandit.labs.overthewire.org -p 2220
bandit3@bandit:~$ ls -la inhere/
total 12
drwxr-xr-x 2 root root 4096 Oct 5 06:19 .
drwxr-xr-x 3 root root 4096 Oct 5 06:19 ..
-rw-r----- 1 bandit4 bandit3 33 Oct 5 06:19 .hidden
bandit3@bandit:~$ cat inhere/.hidden
2EW7BBsr6aMMoJ2HjW067dm8EgX26xNe
Level 4 → 5
The password for the next level is stored in the only human-readable file in the
inhere
directory. Tip: if your terminal is messed up, try thereset
command.
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
35
$ ssh bandit4@bandit.labs.overthewire.org -p 2220
bandit4@bandit:~$ ls -la inhere/
total 48
drwxr-xr-x 2 root root 4096 Oct 5 06:19 .
drwxr-xr-x 3 root root 4096 Oct 5 06:19 ..
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file00
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file01
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file02
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file03
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file04
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file05
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file06
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file07
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file08
-rw-r----- 1 bandit5 bandit4 33 Oct 5 06:19 -file09
# using bash scripting
bandit4@bandit:~$ for file in inhere/*; do cat "$file";echo \n; done
# check content first
bandit4@bandit:~$ file inhere/*
inhere/-file00: data
inhere/-file01: data
inhere/-file02: data
inhere/-file03: data
inhere/-file04: data
inhere/-file05: data
inhere/-file06: data
inhere/-file07: ASCII text
inhere/-file08: data
inhere/-file09: data
bandit4@bandit:~$ cat inhere/-file07
lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR
Level 5 → 6
The password for the next level is stored in a file somewhere under the
inhere
directory and has all of the following properties: human-readable, 1033 bytes in size, not executable.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh bandit5@bandit.labs.overthewire.org -p 2220
bandit5@bandit:~$ ls inhere/
maybehere00 maybehere03 maybehere06 maybehere09 maybehere12 maybehere15 maybehere18
maybehere01 maybehere04 maybehere07 maybehere10 maybehere13 maybehere16 maybehere19
maybehere02 maybehere05 maybehere08 maybehere11 maybehere14 maybehere17
# using grep based on size
bandit5@bandit:~$ ls -la inhere/maybehere*/ | grep 1033
-rw-r----- 1 root bandit5 1033 Oct 5 06:19 .file2
# using find base on size
bandit5@bandit:~$ find -size 1033c 2>/dev/null
./inhere/maybehere07/.file2
# using find's output as argument for file
bandit5@bandit:~$ find -size 1033c 2>/dev/null | xargs file
./inhere/maybehere07/.file2: ASCII text, with very long lines (1000)
bandit5@bandit:~$ cat inhere/maybehere07/.file2
P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU
Level 6 → 7
The password for the next level is stored somewhere on the server and has all of the following properties: owned by user
bandit7
, owned by groupbandit6
,33
bytes in size.
1
2
3
4
5
6
7
$ ssh bandit6@bandit.labs.overthewire.org -p 2220
bandit6@bandit:/$ find / -type f -size 33c -user bandit7 -group bandit6 2>/dev/null
/var/lib/dpkg/info/bandit7.password
bandit6@bandit:/$ cat /var/lib/dpkg/info/bandit7.password
z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
Level 7 → 8
The password for the next level is stored in the file
data.txt
next to the wordmillionth
.
1
2
3
4
5
6
7
8
9
10
11
$ ssh bandit7@bandit.labs.overthewire.org -p 2220
bandit7@bandit:~$ ls
data.txt
bandit7@bandit:~$ cat data.txt | grep millionth
millionth TESKZC0XvTetK0S9xNwm25STk5iWrBvP
# or in a one-liner
bandit7@bandit:~$ ls | xargs cat | grep millionth
millionth TESKZC0XvTetK0S9xNwm25STk5iWrBvP
Level 8 → 9
The password for the next level is stored in the file
data.txt
and is the only line of text that occurs only once.
1
2
3
4
$ ssh bandit8@bandit.labs.overthewire.org -p 2220
bandit8@bandit:~$ sort data.txt | uniq -u
EN632PlfYiZbn3PhVK3XOGSlNInNE00t
Level 9 → 10
The password for the next level is stored in the file
data.txt
in one of the few human-readable strings, preceded by several=
characters.
1
2
3
4
5
6
7
$ ssh bandit9@bandit.labs.overthewire.org -p 2220
bandit9@bandit:~$ strings data.txt | grep ==
x]T========== theG)"
========== passwordk^
========== is
========== G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s