Desafío: Jugando a ser un hacker – Nivel 2 Resuelto

Sinceramente, me encanto éste desafío. Cuando terminé el nivel 1 y escribí el post (Desafío: Jugando a ser un hacker – Nivel 1 Resuelto), le eché un pequeño vistazo a éste nuevo nivel. Al principio pensé que se trataba de introducir una simple contraseña no robusta, pero después me empezó a fastidiar no poder pasarlo. Por ello, acá nuevamente un pequeño paso a paso sobre como pasar éste nuevo nivel.

Una vez dentro de nuestro panel de bienvenida a Mod-X (ya tenemos creado nuestro usuario-contraseña, cuando lo resolvimos en el primer nivel), ingresaremos a Levels y luego a Level 1. Ya mismo, se nos presentará el nuevo desafío:

Imagen 1: Presentación al nuevo nivel.

Imagen I: Presentación al nuevo nivel.

El mensaje es claro, alguien ha perpetrado los sistemas de Mod-X y nos ha dejado sin acceso a ellos. Lo que ha hecho éste hacker, fue cambiar las contraseñas por lo que nuestra misión será recuperarla. Concluyendo la introducción, nos avisa que el hacker quiere jugar con nosotros por lo que nos dejó un mensaje, el cual si lo desciframos podremos recuperar el acceso a los sistemas. Para ello, nos dirigimos a Click here to view the message

Imagen II: Mensaje del atacante.

Imagen II: Mensaje del atacante.

Para hacer más corto el walkthrough, vamos a omitir todo lo que está en azul (si ven el código fuente o hacen click sobre ellos, verán unos mensajes insignificantes). Pero, si nos dirigimos al texto ‘Break the challenge and you will find the answer‘, veremos lo siguiente:

Imagen III: Pedido de usuario y contraseña

Imagen III: Pedido de contraseña.

Haciendo click en Aceptar, Cancelar o poniendo cualquier contraseña verán un comportamiento extraño. Algo así como un retraso de un segundo de una pantalla blanca, y luego aparecerá la pantalla del mensaje del atacante. El truco en ésta parte, está en que cuando la pantalla blanca se haga visible tocar rápido la tecla ESCAPE para cancelar la redirección y quedar varados aquí. Verán que en ese momento, la URL es la siguiente:

http://www.mod-x.co.uk/%2C%21%23-.php

Y si vemos el código fuente de la página (click derecho + Ver código fuente de la página), veremos:

Imagen IV: Observando el codigo fuente de http://www.mod-x.co.uk/%2C%21%23-.php

 

Como vemos, tenemos un código JavaScript. Lo primero que debemos hacer, es copiar eso mismo en un simple todo-poderoso Notepad, lo guardamos y lo nombramos como codigo.html (lee bien, ¡ extensión .html !)

Imagen V: Listo para jugar con el código

Imagen V: Listo para jugar con el código

Ahora bien, analizándolo y ejecutándolo (para ejecutarlo, solo tienen que abrirlo con su navegador) podemos ver que nos pide una Password y dependiendo de si es verdadera, nos llevará a la contraseña que estamos buscando. Ésto lo vemos en la sentencia:

if (myxor==enigma){enigma = enigma + ‘.php’;location.href=enigma;}else{location.href=’hahaha.php’;}

Donde si (if) la password ingresada (myxor) es igual a enigma (==enigma) entonces rediriginos a la pagina con la contraseña que contiene el valor ENIGMA (¡la contraseña que buscamos esta en esa variable!) (enigma = enigma + ‘.php’;location.href=enigma); sino (else) rediriginos a hahaha.php (página donde se encuentra el mensaje del hackerlocation.href=’hahaha.php’). Espero que hayan entendido más o menos ésta línea importante, no soy muy bueno en JS como verán.

Lo que se me ocurrió poder hacer en éste desafío, fue forzar al código a que me devuelva la clave sin siquiera conocer la password. ¿Cómo lo logramos? Primero, cambiaremos algo del código (siempre trabajaremos sobre la misma línea de código anterior): reemplazar los location.href por la función document.write(), con ésto lograremos poder escribir en pantalla el resultado de la contraseña que necesitamos. Lo mas importante es lo que haremos ahora, así que presten atención: En la parte del código del ELSE, cambiaremos la redirección donde en vez de mostrarnos hahaha.php nos muestre la variable enigma, la cual tendrá la contraseña que buscamos. Con ésto estamos buscando forzar a que lo que nosotros escribamos cuando salga el cartel de la Ingresar la Password, SI o SI nos demuestre lo que NOSOTROS queremos, es decir, el código de la contraseña. Para no perderlos tanto (espero que no), el código querdaría algo así:

<HTML>
<HEAD>
<TITLE>Null</TITLE>
<SCRIPT>

var string = “8ac249fbd363fx52j1”;
var enigma = “”;
var whatisthis = “var myxor = prompt(‘Password:’,”);for (y=1; y<5; y++) {enigma += (string.indexOf(y)+1);}enigma += 5;if (myxor==enigma){enigma = enigma +
‘.php’;document.write(enigma);}else{document.write(enigma);}”;

eval(whatisthis);

</SCRIPT>
</HEAD>
<BODY>&nbsp;</BODY>
</HTML>

Ejecutando ese código, veremos que nos entregará el siguiente número: 1841055. El siguiente paso, será volver a la página del desafío y cuando nos pida la Password, ingresar dicha cifra. Allí obtendremos la bendita contraseña: m0d_x_sh411_g0_d0wn

Imagen VI: Contraseña obtenida ¿Fin del segundo nivel?

Imagen VI: Contraseña obtenida ¿Fin del segundo nivel?

Ahora debemos introducir esta contraseña en http://www.mod-x.co.uk/mod_x_1con.php (el enlace a esta dirección se encuentra en la Imagen I, en la leyenda Click here to enter mission conclusion)

Imagen VII: ¿Vamos al siguiente nivel?

Imagen VII: ¿Vamos al siguiente nivel?

Espero que se me haya entendido algo de lo que hicimos hoy. ¡ Nos vemos en el próxima nivel !

 

¡ Gracias por leer !

DynamicSec.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s