Levels from Level 15 to 19 focuses on networking concepts.
Level 15
This level is similar to Level 14 expcept we have to use SSL/TLS encryption to establish the connection to port 30001 on localhost.
In SSL/TLS encryption, there is a trusted certificate issuing authoritity. The server pays the server to issue an ceritifcate which consists of meta data of server along with a sign which consists of servers public key and issuing authoritity private key.
When client connects it recives the certificate, and using the issuing authoritity public key verifies the signature. And then using their own public key they use a mathematical algorithm to generate a shared key which would be used for symmetric encryption of data.
In spirit, this is how TLS works except more advanced mathematical algorithms are used
$ openssl s_client -connect localhost:30001
Level 16
This level requires us to identify the correct port based on certain properties and submit the current password to that port using TLS encryption.
To perform this we use nmap:
$ nmap localhost -p31000-32000 -sV
Here -p is used to establish a range of ports and -sV is used to determine service version. Based on this we determine the correct port ( read the otw page ).
Now when we connect via tls encryption we encounter "KEYUPDATE" which means an update of the keys for the current TLS connection and this event is triggered by k or K ( K is used to force keyupdate ). To fix this we use a special flag -ign_eof
$ openssl s_client localhost:31790 -ign_eof
Level 17
This level requires us to find the unique line of text in between two files. We use `diff` utility which compares two files line by line.
$ diff password.new password.old
Level 18
This level requires us to read the readme file in home directory. The challenge being here is that .bashrc file is modified which causes one to logout as soon as they login.
The .bashrc is a special file which executes everytime we open a shell session. Whenever we login, a shell session is opened and the .bashrc file is executed which closes the connection.
To fix this, we use -t flag of ssh which allows us to execute command in a pseudo terminal. To read more about pseudo terminal click here
$ ssh bandit18@bandit.labs.overthewire.org -p 2220 -t "cat readme"
Level 19
Coming Soon!