Desafio #12 - Viernes Negro

Iniciado por xyz, Diciembre 08, 2017, 12:00:58 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 08, 2017, 12:00:58 AM Ultima modificación: Diciembre 08, 2017, 12:29:47 AM por xyz


Underc0ders bienvenidos a nuevos desafíos !

El ganador, tendrá un premio de 10 dólares o su equivalente por envío Paypal.

¿Quienes pueden participar?  TODOS.

Quienes participan por el premio, todo UNDERC0DE EXCEPTO:

  • Administrador
  • Co-Administradores
  • Xyz


Condiciones para participar por el premio:

  • Quien obtenga el mayor puntaje total de los retos de Viernes Negros presentados en Diciembre
  • De haber empate, se tendrá en cuenta las soluciones de los desafíos.
  • Enviar por MP las resoluciones o enlaces de capturas de pantalla.
  • En lo posible, mandar todas las respuestas en un solo MP y el procedimiento utilizado.
  • O pueden enviar soluciones a medida que vayan encontrando.


Aclaraciones:

  • Para obtener la totalidad del puntaje, el reto debe estar completo.
  • Asunto del MP a enviar: "Viernes Negro N° - Desafios (ej. 1,2,3,4,5 o 1,2,3)".
  • Las preguntas/respuestas, que suban en éste post antes de finalizar el Domingo, serán eliminadas.
  • No se brindará ayuda.
  • Se enviará por MP el órden que los participantes deben respetar para explicar sus soluciones.
  • Si otro participante quiere mostrar soluciones alternativas, puede hacerlo luego de que el item anterior sea expuesto.
  • Luego de ello, podrán utilizar el post, para realizar preguntas.


RETOS


Reto 1- Obtener el texto claro. (1 punto)
Código: php
Hi hfopoxc jo o zzsbof ufob dofhs rs hi jwro zo ibwqo aobsfo rs sghof fsozasbhs gohwgtsqvc sg voqsf zc eis qfsog sg ib ufob hfopoxc m zo ibwqo aobsfo rs voqsfzc sg oaof zc eis voqsg. Gw bc zc vog sbqcbhforc oib gwuis pigqobrc. Qcac qcb hcrc zc eis hwsbs eis jsf qcb sz qcfoncb gopfog qiobrc zc vomog sbqcbhforc.


Reto 2. Obtener el flag. (1 punto)
Código: php
00110101 01100110 00110100 01100100 01100011 01100011 00110011 01100010 00110101 01100001 01100001 00110111 00110110 00110101 01100100 00110110 00110001 01100100 00111000 00110011 00110010 00110111 01100100 01100101 01100010 00111000 00111000 00110010 01100011 01100110 00111001 00111001


Reto 3. Mensaje oculto. (1 punto)
Código: php
3786 37 86 766732223927


Reto 4. Encontrar el flag. (1 punto)

  • Ingresar a: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
  • Si no estas registrado, registrate.
  • Realizar el reto "Gana el Viernes Negro", enviar el Flag a la plataforma y adjuntar captura de pantalla del estado junto al flag encontrado.

Reto 5. (2 puntos )

Reto 6. (2 puntos)

  • Generar una funcion la cual simule la secuencia de fibonacci hasta el número 1597.
  • El mismo debe mostrarse por pantalla.

Diciembre 08, 2017, 12:08:13 AM #1 Ultima modificación: Diciembre 11, 2017, 03:53:42 PM por xyz
Y el resultado es el siguiente:

Enviados fuera de termino:

Recuerden que para participar por el premio, deben enviar en tiempo y forma.
Si envián fuera de termino, no podrán participar por el premio.

Diciembre 11, 2017, 04:22:21 PM #2 Ultima modificación: Diciembre 11, 2017, 09:22:50 PM por Once
Bueno señores, me tocó explicar todos los retos, asíq ue acá vamos:

Punto #1:

Tenemos el mensaje que obviamente está cifrado:

CitarHi hfopoxc jo o zzsbof ufob dofhs rs hi jwro zo ibwqo aobsfo rs sghof fsozasbhs gohwgtsqvc sg voqsf zc eis qfsog sg ib ufob hfopoxc m zo ibwqo aobsfo rs voqsfzc sg oaof zc eis voqsg. Gw bc zc vog sbqcbhforc oib gwuis pigqobrc. Qcac qcb hcrc zc eis hwsbs eis jsf qcb sz qcfoncb gopfog qiobrc zc vomog sbqcbhforc.

A simple vista se nota que se trata de un cifrado por sustitución simple (es la primer impresión que obtuve cuanod lo vi) así que procedí a realizar un ataque por No tienes permitido ver los links. Registrarse o Entrar a mi cuenta el cual consiste en contar la aparición de cada caracter y compararlo con la aparición de las letras en el idioma en que esté el mensaje, yo asumí desde el principio que el mensaje estaba en español.

Después de un par de horas jugando en la consola de Python, decidí programar un Script que me ayudara. El script cuanta la aparición de las letras, me permite hacer la sustitución y me permite buscar y contar las palabras con una determinada cantidad de caracteres:


(La interfaz es una basura porque programé el script en 20min)

Ahora, la pista fundamental para solucionar el problema fueron estas tres palabras: jo o zzsbof en especial la tercer palabra, puesto nos confirma que no se trata de un mensaje en idioma inglés (puesto que no hay palabras que comiencen con las dos mismas letras) y además nos dice cual es la primer sustitución: z -> L puesto que las únicas letras que se usan dos veces al inicio de una palabra en español es la L (o la R si se escribe con muy mala ortografía) además nos dice que o tiene que ser sí o si una vocal, en español las vocales más frecuentes son la E y la A y O es la letra con más ocurrencias así que vamos por buen camino, por lógica, se se ve la sustitución o -> E no es lógica (valga la redundancia) así que quedamos con la sustitución o->A y si hacemos la sustitución: s->E comenzamos a ver que la tercer palabra comienza a cobrar sentido: LLE_A_.

Ahora, en la primer palabra tammbien podemos sacar información muy útil, puesto que ya tenemos que la segunda letra es la A podemos suponer que que la primer letra j puede corresponde tanto a y como a v para formar la palabra YA o VA pero lo interesante es que si usamos la sustitución j->v la tercer palabra nos quedaría: LLEVA_ lo que por pura intuición nos lleva a suponer que la última letra de la tercer palabra es R...

Despues de mucho jugar... llegamos al mensaje:

CitarTu trabajo va a llenar gran parte de tu vida la única manera de estar realmente satisfecho es hacer lo que creas es un gran trabajoy la única manera de hacerlo es amar lo que haces. Si no lo has encontrado aún, sigue buscando. Como con todo lo que tiene que ver con el corazón sabrás cuando lo hayas encontrado.


Punto #2:

Este punto es mucho más simple, simplemente convertimos el binario a texto y obtenemos: 5f4dcc3b5aa765d61d8327deb882cf99 que a simplevista parece ser un hash md5, lo buscamos en bases de datos online y obtenemos que el hash corresponde a: password

Punto #3:

Este punto es muy simple es un phonewords (o como se escribiría el mensaje en el teclado de un teléfono), pero puede llegar a tomar mucho tiempo puesto que para el último puesto que para la última palabra existen más de 1679616 posibilidades, después de un rato, la solución es: ESTO ES UN ROMPECABEZAS

Punto #4:

Una vez llegamos a la página, lo primero que notasmos es que nos aparece un mensaje diciendonos que la contraseña no es correcta, así, sin siquiera enviar el formulario, lo cual es sospechoso.

Al revisar el código fuente, notamos que hay varios scripts, incluso algunos con errores de sintaxis, pero lo más importante es que el primero de estos scripts es justo la alerta que se nos presenta al inicio.

Acá comencé a dudar, porque no tiene sentido colocar una alerta fija diciendo que la contraseña no era correcta, mi primer impresión fue que el formulario enviaba los datos a un .php que era procesado en el servidor y colocaba la alerta, pero no existe en el servidor un index.php así que la áunica oopción para la flag, es la que está en los comentarios:



Punto #5:

Para este punto, bajamos el archivo y notamos que es una imagen (por lo menos tiene la extensión de una imagen) peroq ue cuando la intentamos abrir, el visor nos avisa que la imagen está corrupta, lo que nos da una pista que puede tener información inyectada en el archivo que dañó el formato. En mi caso, este es el error que me tira el visor:


Mi primer idea es buscar un comprimido dentro de la imagen, para lo cual, simplemente cambio la extensión al ".rar" (en linux es así de simple, no sé en windows) a lo que obtenemos:


Efectivamente, en la imagen hay un archivo comprimido protegido por contraseña llamado loop.txt.

Luego de buscar en los metadatos y no encontrar nada útil, decidí abrir la imagen con un editor hexadecimal y buscar el final de la imagen como tal y donde comienza el comprimido.

La cabecera de los archivos .rar es Rar así que buscamos esa cadena y oh sorpresa


Encontramos la cadena: "--------GOKURar" intui que el "--------" es un simple separador, así que entre el separador y la cabecera tenemos la palabra: GOKU

Intentamos esa palabra como contraseña y voilà obtenemos el flag.

CitarBienvenido a los retos !!!
flag: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Reto #5

Para este reto programé el script en Python:

Código: python
def fib():
    a, b = 1, 1
    while True:
        print(a)
        if a == 1597:
            break
        a, b = b, (a + b)

fib()


La función básicamente se explica a si misma, pero iniciamos dos variables con los primeros elementos de la sucesión Fibonacci, y en un bucle corremos la suma hasta que llegamos al número 1597, luego, a la variable a  le asignamos el valor de la variable b y a la variable b le asignamos el valor de la suma de las variables a y b.

Tener en cuenta que en Python las líneas se ejecutan de derecha a izquierda, por lo que primero suma a con b, y asigna ese valor a b y a a le asigna el valor viejo de b.

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Bueno bueno, que tal compañeros en esta oportunidad estaré explicando todos los desafios :D
Reto 1
Quizás para algunos se le sea sencillo a simple vista poder descubrir el método de desencriptado, para este ejercicio lo primero que se me vino a la cabeza fue ROT, asi que si vamos a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta nos podremos encontrar con una herramienta que permite hacer un bruteforce con todos los métodos ROT posibles, así que sólo le pasamos el texto y comparamos resultados.


Reto 2
Aquí es mas sencillo, si convertimos ese binario nos arroja la siguiente cadena: "5f4dcc3b5aa765d61d8327deb882cf99" y si usamos un cracker online como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta descubrimos que usa md5 y que la pass es password


Reto 3
Para este reto, vamos a usar esta foto como ayuda
Ahora sabemos que el numero 3 puede significar D, E o F
Entonces...







3786
DPTM
EQUN
FRVO
S
Al ordenar todos los posibles valores de cada numero, buscamos que exista una palabra con sentido, en caso de los numeros 3786 nos da la palabra ESTO y así se desarrolla sucesivamente, dando como resultado final la palabra ESTO ES UN ROMPECABEZAS


Reto 4
Este reto lo explicare con la siguiente imagen
Como vemos en la imagen, ya se está dentro del portal del reto y nos pondremos a revisar el código fuente de la página, como uso firefox sólo es cuestión de dar click derecho y darle en "inspeccionar elemento". Una vez dentro podremos encontrar un comentario donde nos indica que hemos encontrado el flag :D


Reto 5
Una vez descargado el rar, abrimos un editor hexadecimal y nos fijamos en la siguiente parte
Vemos que aparece una cabecera Rar! dentro de nuestra imagen, lo cual indica que tiene un rar escondido, pero antes de eso vemos la palabra GOKU que nos va a servir para mas adelante.
Para ver que hay dentro de ese rar sólo con darle a la imagen click derecho, Abrir con y darle a 7-Zip (en mi caso es 7-zip, pueden usar otro programa si desean, como winrar)
Vemos que contiene un archivo loop.txt, le damos doble click y nos pide una pass. ¿Se acuerdan de la palabra que encontramos antes de la cabecera? Exacto, ahora es momento de usar a GOKU  ;D
Una vez puesta la pass, se nos revelará el archivo txt con nuestra flag


Reto 5
Para este reto comparto la foto de mi código para explicarlo
Es un código simple en java, donde las variables fibon 1 y fibon 2 nos serviran, una para imprimir el numero actual y otro para recoger el estado anterior de la serie. La variable num la usamos para ponerle un limite a nuestro ciclo for, ya que se obtiene el numero 1597 si ese proceso se repite 17 veces. Eso sería todo :D
El hacking es un privilegio.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Bueno bueno, que tal compañeros en esta oportunidad estaré explicando todos los desafios :D
Reto 1
Quizás para algunos se le sea sencillo a simple vista poder descubrir el método de desencriptado, para este ejercicio lo primero que se me vino a la cabeza fue ROT, asi que si vamos a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta nos podremos encontrar con una herramienta que permite hacer un bruteforce con todos los métodos ROT posibles, así que sólo le pasamos el texto y comparamos resultados.

Carajo, nunca se me ocurrió y perdí un día haciendo el análisi de frecuencias. Bueno, me queda como experiencia.




PD: Coloqué mi solución al cuarto reto, no había dado cuento que me lo había pasado por alto.

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Diciembre 12, 2017, 07:54:23 AM #5 Ultima modificación: Diciembre 12, 2017, 07:56:19 AM por Lechugo
Saludos Underc0ders! Ahora explicare los retos que si pude resolver.

RETO 2:
En este convertimos el binario que nos dan a texto, y nos da lo siguiente: 5f4dcc3b5aa765d61d8327deb882cf99
Claramente es un hash por lo que luego de pasarlo por crackstation, nos da el resultado: password

RETO 3:
Para este reto es como si escribieramos en un celular con el diccionario activado, es decir, 2 puede ser 'abc', 3 puede ser 'def', etc. Por lo que luego de unas pruebas nos da el resultado final:
ESTO ES UN ROMPECABEZAS

RETO 4:
Este consistia en hallar el flag que estaba escondido, revisando el codigo fuente de la pagina, nos damos cuenta que el flag esta en forma de comentario, intentamos probarlo y que no sea una "trampita", y definitivamente es el correcto.


RETO 6:
Bueno para este hice un programita en C, pedimos al usuario que defina cual va a ser el numero maximo que desea calcular, tenemos una variable suma que va mostrando la suma de las variables anterior y anterior2 que son las que usamos para movernos dentro de nuestra serie de fibonacci.


Eso es todo saludos!

Mi código para la secuencia fibonacci.

Código: python
fibonacci = 0
x=0
y=1
num = int(input("Numero de elementos:"))
for n in range(num):
    fibonacci = x + y
    aux = x + y
    x = y
    y = aux
print(fibonacci)


Salida.

Código: php
Numero de elementos:4099813652272256889693141833847694503312691832097524894157217953692247851518445463511050399075249500640539822032106623670463562734117718194840842964517123059061303035218886451435828618141665343021663404206696810807094770419764631575911154600897938301992870949809509296289265542490179792685795875159730837267622525965073590537669593049
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta