Sorry, this entry is only available in European Spanish. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

Buenas, hoy vamos a resolver los retos Básicos de la plataforma https://atenea.ccn-cert.cni.es
He descubierto hace no mucho esta plataforma y me parece una muy buena forma de adentrarse en el mundo de los CTF y la seguridad informática, se agradecen estas iniciativas.
Taparé los flags para que al menos tengáis que molestaros en leer cómo los he resuelto yo.
Dejémonos de introducciones y vamos al lio!

Reto 1 – Hash

Enunciado:

La contraseña para superar este reto es LearnTheHashFunction
Tendrás que calcular su hash md5 y ponerla en el formato de la plataforma, esto es: flag{md5}

Solución:

La resolución de este primer reto es muy sencilla, bastará con usar el módulo md5 de la librería hashlib de python

#!/usr/bin/python3
from hashlib import md5

print ('flag{' + md5(b'LearnTheHashFunction').hexdigest() + '}')

Reto 2 – Hash 2

Enunciado:

La contraseña para superar este reto es ThisIsAMoreSecureHashFunction
Tendrás que calcular su hash sha256 y posteriormente calcular su md5 para poder poner la solución en el formato de la plataforma, esto es: flag{md5}

Solución:

Este segundo reto es muy parecido al primero, esta vez usaremos ‘update’ de la librería hashlib para que quede más ordenado:

#!/usr/bin/python3
import hashlib

s = hashlib.sha256()
s.update(b"ThisIsAMoreSecureHashFunction")
m = hashlib.md5()
m.update(s.hexdigest().encode('utf-8'))
print("flag{"+m.hexdigest()+"}")

Reto 3 – Hash 3

Enunciado:

Para superar este reto deberás calcular la cadena de texto cuyo hash md5 se corresponde con el siguiente: 54f662a095fa3d5fbbdaac72d176701b
Una vez obtenida, deberás poner dicha cadena de texto en mayúsculas y calcular su hash md5 para poder enviar la solución siguiendo el formato de la plataforma: flag{md5}

Solución:

Para ‘crackear’ este hash vamos a usar dos métodos.
El primero será usando una de las muchas webs que hay para este propósito, yo os recomiendo la web http://hashkiller.co.uk/

El segundo método es utilizar john o hashcat desde nuestra máquina con un diccionario, para esto se suele usar el rockyou.txt

echo '54f662a095fa3d5fbbdaac72d176701b' > hash.txt
hashcat -m 0 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
# o bien
john --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt


Como veis, el resultado de crackear este hash es : masterofpuppets, vamos a convertirlo a mayúsculas y obtener el flag:

#!/usr/bin/python3
import hashlib

m = hashlib.md5()
m.update('masterofpuppets'.upper().encode('utf-8'))
print("flag{"+m.hexdigest()+"}")

Reto 4 – Base64

Enunciado:

Para superar este reto tendrás que descodificar el fichero adjunto y poner la contraseña en el formato de la plataforma, esto es: flag{md5}
Contenido del fichero:

UmVjdWVyZGEgcXVlIGN1YW5kbyBjb2RpZmljYXMgYWxnbyBlbiBiYXNlNjQgTk8gbG8gZXN0w6Fz
IGNpZnJhbmRvLCBzaW5vIHF1ZSBzaW1wbGVtZW50ZSBsbyBlc3TDoXMgY29kaWZpY2FuZG8uDQoN
CkxhIGNvbnRyYXNlw7FhIHBhcmEgc3VwZXJhciBlc3RlIHJldG8gZXM6IHJlY3VlcmRhcXVlYmFz
ZTY0Tk9lc2NpZnJhcg0KCg==

Solución:

Para solucionar este reto bastaria con usar cualquier web que decodifique Base64 o con bash:

base64 -d base64-c6d8efd649ad94af23eb2bd2af63edd0.txt

Pero para seguir con la dinámica, también lo resolví con python:

#!/usr/bin/python3
import base64

f = open("/tmp/base64-c6d8efd649ad94af23eb2bd2af63edd0.txt","r")
b64text = f.read()
print(base64.b64decode(b64text).decode('utf-8'))

Reto 5 – ASCII

Enunciado:

Los códigos del 33 al 126 se conocen como caracteres imprimibles, y representan letras, dígitos, signos de puntuación y varios símbolos.
Para pasar este reto deberás encontrar los caracteres correspondientes a la siguiente codificación ASCII:
080 097 115 115 119 111 114 100 032 112 097 114 097 032 115 117 112 101 114 097 114 032 101 108 032 114 101 116 111 058 032 084 104 101 065 083 067 073 073 084 097 098 108 101 033

Solución:

Para resolver este reto debemos ir convirtiendo a char cada código ascii, para ello recorreremos la cadena que nos dan separando por los espacios. Usaremos la función split para esto:

#!/usr/bin/python3

msg = ''
text = '080 097 115 115 119 111 114 100 032 112 097 114 097 032 115 117 112 101 114 097 114 032 101 108 032 114 101 116 111 058 032 084 104 101 065 083 067 073 073 084 097 098 108 101 033'
for i in text.split(' '):
	msg += chr(int(i))
print (msg)

Reto 6 – Hex

Enunciado:

Para pasar este reto deberás decodificar la siguiente cadena hexadecimal:
50617373776f72643a2044346d7054686548337821

Solución:

Para resolver este reto podríamos usar cualquier web que nos convierta hexadecimal en ascii como: https://www.rapidtables.com/convert/number/hex-to-ascii.html
Os incluyo también la resolución usando python:

#!/usr/bin/python3

print(bytes.fromhex('50617373776f72643a2044346d7054686548337821').decode('utf-8'))
#python 2 : print ('50617373776f72643a2044346d7054686548337821'.decode('hex'))

¿Me ayudas a compatirlo?