Bandit7 12
Información SSH |
---|
Host: bandit.labs.overthewire.org |
Port: 2220 |
- Bandit7-8
- El problema de este reto es que de un archivo en texto plano extenso tenemos que sacar la contraseña de “millionth”.
- El cat es sencillo, usando grep encontramos rápido la contraseña para el siguiente nivel.
1
cat data.txt | grep millionth
- Bandit8-9
- El problema de este reto está en que necesitamos sacar la única línea que no está repetida de un archivo txt amplio, para eso se usa el comando uniq, el comando se suele usar con el comando sort que lo que hace es juntar todas las líneas, necesario para que uniq funcione.
- El comando uniq también sirve para números (-n), cadenas invertidas (-r) y nosotros vamos a usar (-u) para sacar la cadena de texto única.
- El comando sería
1
sort data.txt | uniq -u
- Bandit9-10
- El problema de este reto está en encontrar líneas legibles, en una de ellas se encuentra la password para el siguiente reto, para ello usaremos el comando string.
- También tenemos la pista de que la contraseña se encuentra tras algunos “=” para afinar más la búsqueda usaremos grep.
- El comando sería
1
strings data.txt | grep ===
- Bandit10-11
- El problema de este reto se encuentra en que la contraseña está codificada en base64, un sistema de codificación muy usado en binarios.
- Para decodificarlo necesitamos el comando base64 y el parámetro -d
- El comando sería
1
base64 -d data.txt
- Bandit11-12
El problema de este reto se encuentra en que la contraseña se ha cifrado con el cifrado ROT13, que se trata de cambiar cada letra por la letra que está 13 posiciones superior a la misma, hay muchas webs que pueden descifrar nuestra contraseña (https://rot13.com/), pero siendo un método de cifrado tan sencillo hay formas de automatizarlo con código.
Un par de ejemplos serían:
Un comando en python para desencriptar ROT13
1 2 3 4 5 6 7 8 9 10 11 12
def rot13(texto_cifrado): texto_desencriptado = "" for caracter in texto_cifrado: if 'a' <= caracter <= 'z': offset = ord('a') texto_desencriptado += chr(((ord(caracter) - offset - 13) % 26) + offset) elif 'A' <= caracter <= 'Z': offset = ord('A') texto_desencriptado += chr(((ord(caracter) - offset - 13) % 26) + offset) else: texto_desencriptado += caracter return texto_desencriptado
- Uso:
1
rot13.py "Texto encriptado"
- El mismo comando en bash
1
2
3
4
5
6
7
8
9
#!/bin/bash
if [ -z "$1" ]; then
echo "Uso: $0 <texto cifrado ROT13>"
exit 1
fi
texto_cifrado="$1"
texto_descifrado=$(echo "$texto_cifrado" | tr 'A-Za-z' 'N-ZA-Mn-za-m')
- Uso:
1
./rot13_decode.sh "Ubyq, guvf vf na rknzcyr bs EBG13."
- El resultado sería
1
echo "Gur cnffjbeq vf WIAOOSFzMjXXBC0KoSKBbJ8puQm5lIEi" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
This post is licensed under CC BY 4.0 by the author.