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'))
owpcr9