Guappi hack

Resolviendo Guappi Hack de 0 a 30

CONTENIDO



INTRODUCCIÓN


Guappi hack es un reto para aquellos interesados en seguridad informática. cabe mencionar que para la resolución de este entretenido desafío en linea, se requieren diversos conocimientos en HTML, JavaScript, PHP, JQUERY , Algunos conocimientos básicos en matemáticas y Seguridad Informática en general.

Al momento de ir avanzando en la resolución de niveles, iras adquiriendo diversos conocimientos por el hecho de la investigación constante que será necesaria para poder resolver cada nivel.

Lo recomendado es intentar resolver cada nivel en la página oficial de Guappi Hack por tu cuenta antes de ver las soluciones que yo te presento.


Solución - lvl 0


 Para lograr resolver el nivel 0, debemos analizar bien el texto. Hay que tener en cuenta que en cada lvl de este desafío, se nos otorgará pistas para poder resolverlo, y a medida que vamos avanzando, se va otorgando mucho más dificil.

 Como dije anteriormente, el texto nos da pistas, si bien las pistas que salen en el texto no son literales, nos orientan un poco a pensar en como trabaja un desarrollador web, haciendonos investigar el uso de sus herramientas, lenguajes a utilizar, navegadores entre otras cosas.

 En este caso lo que debemos hacer es concentrarnos en utilizar las herramientas que nos entrega nuestro navegador web (en este caso utilizo google chrome, aunque puede ser cualquier otro que nos permita ver el codigo fuente y complemetos de los sitios que visitamos con frecuencia.). Para poder acceder a ella lo podemos hacer de las siguientes formas:


En esta ocasión utilizaremos la combinación de teclas "CTRL + U" para poder visualizar el código completo de la página web en una nueva ventana.

Una vez abierta la ventana con el código fuente visible, debemos fijarnos en una función JavaScript llamada Check la cual recibe un parámetro passwords con el cual se realiza la lógica de acceso, dejandonos a la vista la contraseña y el como quedará el link de la página una vez ingresemos la contraseña.

La funcion nos muestra que en ella se está declarando una variable de tipo cadena llamada crt000734 la cual contiene el valor de Hello, Luego una linea más abajo está cadena se transforma toda a minúscula con el método "toLowerCase()" quedando en hello.

Posteriormente se realiza la lógica de acceso en donde se compara la contraseña ingresada en la casilla la cual tiene un id llamado log

con la variable declarada en el script Hello. Si la función se cumple, el nuevo link será la contraseña ingresada en minúsculas más la terminación .php.

Password: Hello


Solución - lvl 1


 Para la resolución del level 1, debemos hacer algo muy similar al level anterior. Quiere decir que debemos centrarnos en analizar la función de JavasScript llamada Check la cual recibe un parámetro llamado passwords para poder validar el acceso al siguiente nivel.

 Se debe tener en cuenta que dentro de la función se crea una una variable llamada crt000734 la cual recibe un valor de ı234, luego en la siguiente linea de código se crea una variable llamada 734000 la cual se le asigna el valor de la variable crt000734 pero con una función replace en donde el número uno más pequeño ("ı")es reemplazado por un uno normal ("1").   Luego, justamente en la linea siguiente, se realiza la validación que necesitamos para poder acceder al siguiente nivel, en donde se toma el valor ingresado por el usuario en la casilla y se compara por con la variable crt000734. Si la contraseña ingresada es la misma, la página se rediccionará automaticamente al siguiente nivel generando el link http://guappi.com/hack/crt734000+".php", o de forma mucho más clara http://guappi.com/hack/1234.php,por lo que solo debemos copiar y pegar el valor de la variable crt000734 en la casilla, dando solución al level 1.

Password: ı234


Solución - lvl 2


  Al igual que los niveles anteriores, debemos revizar el código de la página web, específicamente el codigo JavaScript el cual realiza las validaciones en esta ocación. Para ello lo visualizaremos con las teclas CTRL + U.

  Una vez tengamos el código a nuestra vista, viene la parte de análisis, en donde esta vez veremos nuestra función Check antes utilizda un poco distinta, correcto!, esta vez las variables no están declaradas dentro, por lo que debemos mirar fuera de la función. Si miramos más arriba, veremos tres variables declaradas:
logeader al cual se le asigna la cadena de log.txt.
crt000734 al cual se le asigna la cadena de ı23ı.  crt734000 al cual se le asigna una cadena muy particular la cual inclulle dos metodos consecutivos de replace crt000734.replace("ı", "1").replace("ı","45");.
Una vez visto las variables declaradas, podemos analizar la función Check la cual nos validará el acceso. Se puede observar que si la contraseña ingresada por el usuario es la misma de la variable crt000734, osea ı23ı, esta redireccionará al siguiente level cuyo link será algo así como:
guappi.com/hack/crt000734.replace("ı", "1").replace("ı","45")+".php" o de forma mucho más clara guappi.com/hack/12345.php debido a que hay que tener presente que la función replace() nos reemplaza el primer uno pequeño ("ı") por un uno normal ("1") y el segundo uno pequeño lo reemplaza por un ("45").

 Ya que sabemos la contraseña, solo nos quedaría copiar y pegar la contraseña en el cuadro de ingreso de texto, sin embargo esto no será posible, debido a que el input del password contiene el atributo onpaste con el valor de "return false", lo que no nos deja pegar texto en el.

 Para poder dar solución a este nivel, nos será necesario utilizar la consola que nos facilita nuestro explorador, a la cual accedemos presionando la tecla F12 en el caso del explorador Google Chrome, y presionando sobre la pestaña llamada console. Una vez aquí, solo nos quedará escribir el valor que queremos que se le asigne al input al momento dar enter, quedando algo así: document.getElementById("log").value="ı23ı", con lo que se nos ingreserá la contraseña en la casilla y podremos pasar al siguiente nivel.


Password: ı23ı


Solución - lvl 3


 Ya nos encontramos en el nivel 3 y debemos dar la bienvenida a las matemáticas!, "Si dar solucion al lvl 3 queremos, analizar el código de la página debemos".

Si analizamos el codigo fuente de la página presionando la combinación de teclas CTRL + U podremos notar que los los scripts que se desarrollan en la misma página hay una pequeña pista, se está llamando a una función de nombre checking, sin embargo al analizar las funciones presentes, esta no se encuentra. Por este motivo debemos revizar nuevamente el código y percatarnos que en la página se está llamando un Script externo llamado 6172.js, el cual nos dará el paso al siguiente nivel, pero no tan rápido, primero debemos resolverlo.

Si analizamos bien la función, nos podemos percatar que en el se declara una variable llamada aux0 a la cual se le asigna un valor numérico de 49.95944768277661 con el cual debemos reemplazar en cada lugar de la operación matemática quedando algo así :

Si realizamos la operación matemática de forma correcta obtendremos el siguiente resultado 5764,000000046149 que si lo redondeamos, nos quedará esto 5764. Y al igual que niveles anteriores solo nos queda revizar la lógica de validación para poder obtener acceso al siguiente nivel, por lo que si ingresamos el resultado obtenido, habremos completado este nivel!.

Password: 5764