https://mega.nz/#!bNwFVL5A!0tfOO7IjoCJHgO3fITOPmNPpaSnOaG3p9xWOdVvoNCo

LOGO.png

En este reto se nos presenta un rar en el que encontramos un archivo de texto y un script en python:

1.PNG

Veamos el contenido de los ficheros:

2.PNG

El Script de python está ofuscado, así que no hay nada que buscar aquí.

3.PNG

El archivo txt hace honor a su nombre y nos presenta un diccionario.

Vamos a ejecutar el script python a ver que ocurre.

4

Se observa a la perfección que va probando las palabras del diccionario pero si seguimos la ejecución de los payloads podemos ver que nos lanza los siguientes mensajes:

YOU MUST DELETE ALL NOOP’S

YOU MUST DELETE ALL NOOP’S

YOU MUST DELETE ALL NOOP’S

YOU MUST DELETE ALL NOOP’S

DO YOU KNOW, WHAT YOU MUST DO?

REVISE THIS LOG.

Esto nos deja una cosa clara, debemos eliminar los noops para comenzar a poder probar de verdad si este diccionario sirve para algo o no.

Para ello podemos eliminarlos de muchas maneras, pero dado que es un reto escrito en python, pues vamos a escribir un script que limpie caracteres de un diccionario, os dejo el código del script que escribí para este caso en concreto:

https://pastebin.com/zKgLFb2y —> Código del limpiador de diccionarios.

Voy a explicar un poco lo que hace el script:

  • Mediante una entrada por parámetro abre el diccionario original. (-i, –input)
  • Mediante otra entrada por parámetro crea el archivo en el que se guardará el diccionario crappeado (Limpio). (-o, –output)
  • Mediante otra entrada por parámetro se selecciona el string que se se desea limpiar / modificar.(-d, –delete)
  • Mediante otra entrada por parámetro se selecciona por que string se desea reemplazar el string a limpiar, con ” ” se establece que se desea eliminar es string que contamina el código.(-rp, –remplace)–>PAra eliminar el string (-pr ” “, –remplace ” “)

La programación del script es la siguiente:

  • Abre el diccionario original y lo corta en líneas.
  • Introduce cada línea dentro un array para poder trabajar con ellas de una en una pero en bloque mediante una secuencia for / in.
  • adquiere cada línea y reemplaza el string indicado por parámetro cuando se ejecuta por el deseado también indicado en la llamada al string, para eliminarlo como os comentaba se debe usar ” “.
  • Escribe línea a línea en el archivo indicado en la llamada al script mediante el parámetro output.

Esta es la lógica del script.

Una vez tenemos el script procederemos a decrapear el diccionario original llamando al script de esta manera, (Las rutas y nombres de llamado al diccionario original y guardado del nuevo diccionario pueden variar en vuestro caso):

python decrapping_dics.py -i python_dic.txt -o new_python_dic.txt -d noop -rp ” ”

Como se aprecia se ha creado el diccionario sin los noops

5

6

Vamos a volver a lanzar el reto con el nuevo diccionario a ver si ha dado resultado el proceso que hemos ejecutado:

7.PNG

8

Con esto obtenemos la ansiada flag:

flag{p1th0n_1t_1s_gr34t_1d34}

 

Espero que el resolver este reto como dios manda os halla sido tan divertido como para mi ha sido el generarlo y documentarlo para vosotros.

Nos vemos en más retos. !!Hasta pronto¡¡

Anuncios