c1b3rwall / module_3

Files from module_3
13 stars 14 forks source link

Ejercicio 3 #1

Open jfzazo opened 4 years ago

jfzazo commented 4 years ago

Lo primero que se observa es un fichero de texto compuesto por la palabra Ook junto a un signo (!?.).

Parece un poco sospechoso así que mi primer intento ha pasado por reemplazar Ook por un valor nulo y observar si existe algún patrón que se pueda observar a simple vista. Algo así como "ascii art" con esos tres caracteres. Nada, intento infructuoso. Otra opción hubiera sido intentar base 3, jugando con las distintas posibilidades (la ! sea 0,1 o 2, el ? sea cualquiera de las no seleccionadas, y el . la opción restante).

Como hasta ahora no he visto muchos ejercicios de fuerza bruta, una búsqueda rápida en google nos permite descubrir el lenguaje exotérico Ook, como una reescritura de BF.

import sys

def tobf(s):
    s = s.replace('\n'," ").replace('\r\n'," ")
    i = iter(s.split(' '))
    s = ''.join(map(' '.join,(zip(i,i))))
    s = s.replace("Ook. Ook?", ">")
    s = s.replace("Ook? Ook.", "<")
    s = s.replace("Ook. Ook.", "+")
    s = s.replace("Ook! Ook!", "-")
    s = s.replace("Ook! Ook.", ".")
    s = s.replace("Ook. Ook!", ",")
    s = s.replace("Ook! Ook?", "[")
    s = s.replace("Ook? Ook!", "]")
    print s
    return s

try:
    f = open(sys.argv[1], 'r')
    tobf(f.read())
except:
   print 'Bye!'

Ejecutándolo sobre el fichero obtenemos un primer código en BF. Interpretándolo:

git clone https://github.com/pocmo/Python-Brainfuck.git
cd Python-Brainfuck
python2 brainfuck.py bf_code.txt

Obtenemos una nueva salida en BF. Repetimos el proceso:

python2 brainfuck.py bf_code.txt > /tmp/bf2.txt
python2 brainfuck.py /tmp/bf2.txt && rm /tmp/bf2.txt

Generando la clave "665756334e46706f4d545273646e737965575a7665476c6e43673d3d", que muy seguramente sea una clave en base64 por el "==" del final.

Cyberchef para ello y voila! https://gchq.github.io/CyberChef/#recipe=From_Hex('Auto')From_Base64('A-Za-z0-9%2B/%3D',false)&input=NjY1NzU2MzM0ZTQ2NzA2ZjRkNTQ1MjczNjQ2ZTczNzk2NTU3NWE3NjY1NDc2YzZlNDM2NzNkM2QK

Fracaso en este intento. Se obtiene una clave que no tiene nada que ver con la que realmente se pide para el reto. No obstante, si que presenta la misma longitud.

Ni XOR, ni rot47, ni vigenere han dado buenos resultados sobre la salida. Sustitución tampoco parece que sea. Creo que estoy cerca, comparto lo que he visto y lo que me queda... seguro que es algo tontorrón con lo que seguro que alguien me podrá echar una mano ;)

sergamar commented 4 years ago

Han puesto una última 'capa de ocultación'. Prueba con rot13 cambiando 'amount' a 6 y mira con cariño el output :)

percu commented 4 years ago

Además la clave Hexadecimal obtenida del Brainfuck debería ser: 665756334e46706f4d545273646e737a65575a7665476c6e43673d3d y no 665756334e46706f4d545273646e737965575a7665476c6e43673d3d

jfzazo commented 4 years ago

Han puesto una última 'capa de ocultación'. Prueba con rot13 cambiando 'amount' a 6 y mira con cariño el output :)

La pista que me hacía falta. Intenté rot47 pensando que la llave inicial debería parar en una "m". No se me ocurrió pensar que estaba a simple vista y los caracteres distintos de 0-9A-Za-z debían quedar inmutables.

gr4nc4n4r14 commented 4 years ago

En la web https://www.splitbrain.org/_static/ook/ te realiza los dos pasos (Ook. y Brainfuck). Pero una vez obtengo esa cadena hexadecimal le he aplicado el From Hex y me devuelve fWV3NFpoMTRsdnsyeWZveGlnCg==. Parece ser un base64, porque termina en ==. Pero le aplico base64 y me devuelve }ew4Zh14lv{2yfoxig

sergamar commented 4 years ago

En la web https://www.splitbrain.org/_static/ook/ te realiza los dos pasos (Ook. y Brainfuck). Pero una vez obtengo esa cadena hexadecimal le he aplicado el From Hex y me devuelve fWV3NFpoMTRsdnsyeWZveGlnCg==. Parece ser un base64, porque termina en ==. Pero le aplico base64 y me devuelve }ew4Zh14lv{2yfoxig

Dale unas vueltas a eso con rot13 pero teniendo en cuenta que quizá la flag no está escrita de la forma habitual

rotgogo commented 4 years ago

Buen aporte gr4nc4n4r14. Es pag. esta muy bien. Yo lo saque con https://www.dcode.fr/ook-language luego con https://www.dcode.fr/brainfuck-language y los demás lo decodifique con CyberChef Saludos!

edikuba commented 4 years ago

Nada de esto es mi mérito, es un trabajo en equipo, solo quiero ayudar un poco: Yo he instalado desde Ookie el interprete en Kali y lo he ejecutado desde el terminal: $ ookie -v File_3.txt >> File_3a.txt Luego con dcode.fr he encontrado la clave: 665756334e46706f4d545273646e737965575a7665476c6e43673d3d Y luego en CyberChef he aplicado en su orden: From Hex Base64 Reverse Rot6 Y flag encontrada, aunque la respuesta da: module2{...} solo he tomado el contenido {...} para la respuesta.