Solucion de los 5 primeros niveles del Hack-it de la Euskal Encounter 2006

Como prometí, aquí tenéis la solución a los primeros cinco niveles del Hack-it que colgué en el artículo anterior. Ya comenté que hay muchas posibles soluciones, así que, si queréis, podemos comentar soluciones alternativas en los comentarios 😉

 

Nivel 1

Este nivel es muy sencillo, solamente tiene la pequeña complicación de que la función de JavaScript Login() está redefinida más abajo. La primera definición de Login() es esta:

        function Login() {
          var user = document.login.username.value;
          var pass = document.login.password.value;
          if (user=="hacker" & pass=="31337") {
	    location.href = 'level2-' + pass + '.html';
	  } else {
	    alert("ACCESS DENIED!");
	  };
        }

La segunda definición de la función está escondida con muchos espacios al final del HTML:

function Login(){ var user = document.login.username.value; var pass = document.login.password.value; if (user=="h4x0rz" & pass=="0wnzj00") { location.href = 'level2-' + pass + '.html'; } else { alert("ACCESS DENIED!"); }; } 

Viendo este segundo código, es trivial averiguar el usuario (“h4x0rz”) y la contraseña (“0wnzj00”).

Nivel 2

En este nivel el HTML está ofuscado utilizando JavaScript y la típica función unescape():

<script language=javascript>document.write(unescape('%3C%73%63%72%69%70%...

Una manera bastante genérica de romper esta ofuscación es agregar un <textarea> al principio de todo para que se nos muestre el código dentro de un bloque de texto:

<script language="javascript">document.write("<textarea rows=40 cols=80>"+unescape('%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22...

Si miramos el final del código HTML veremos, como en el nivel anterior, la función Login() con el usuario y la contraseña:

<script language="JavaScript">
function Login(){ var user = document.login.username.value;
var pass = document.login.password.value; if (user=="l33tz" & pass=="r2l4m3")
{ location.href = 'level3-' + pass + '.html'; } else { alert("ACCESS DENIED!"); }; }
</script>

Nivel 3

Este es el primer nivel de criptografía. Nos dicen la contraseña usada para cifrar, ABECEDARIO, nos dan el texto cifrado y nos dicen que el algoritmo es muy sencillo.

La extrema dificultad de este nivel cuando se planteó en la Euskal Encounter 2006 fue que el mensaje cifrado daba una representación con caracteres extraños como ^M, etc. y era difícil de ir descifrando uno a uno.

Dado que en un par de horas nadie pudo pasar el nivel, dimos una pista, el mensaje cifrado en hexadecimal, en lugar de como caracteres imprimibles:

0d 23 65 20 2a 2a 35 20 28 3c 24 b3 24 63 35 25
33 33 69 2a 2d 62 36 2a 22 31 28 37 27 3b 24
62 2b 2a 33 21 2d 72 2c 3c 7b 62 20 1b 75 16
22 3b 3a 22 71 42

Teniendo esos bytes, la contraseña ABECEDARIO y sabiendo que el cifrado es muy sencillo, probamos aplicando XOR…

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
  char pass[] = "ABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIOABECEDARIO";
  char cyphertext[] = "\x0d\x23\x65\x20\x2a\x2a\x35\x20\x28\x3c\x24\xb3\x24\x63\x35\x25\x33\x33\x69\x2a\x2d\x62\x36\x2a\x22\x31\x28\x37\x27\x3b\x24\x62\x2b\x2a\x33\x21\x2d\x72\x2c\x3c\x7b\x62\x20\x1b\x75\x16\x22\x3b\x3a\x22\x71\x42";
  int i;

  for(i = 0; i < strlen(cyphertext); i++)
  	printf("%c", cyphertext[i]^pass[i]);
}

Nivel 4

En este nivel nos tenemos que bajar un fichero que contiene un programa que hay que crackear. Al descomprimir el ZIP, vemos que además del programa, se nos ha adjuntado algo que parece el código fuente:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
  char serial[15] = "UNREGISTERED";
  char login[20];

  printf("Introduzca su nombre de usuario: ");
  gets(login);

  printf("Comprobando número de serie... %s\n", serial);

  if(!strcmp(serial, "00-11-22-33-44"))
  {
     printf("Hola %s, bienvenido al sistema...\n", login);
     printf("La contraseña del siguiente nivel es LALALALA\n");
  } else
  {
     printf("Lo siento %s, su numero de serie ha caducado\n", login);
     exit(-1);
  }
}

Como vemos, el programa tiene múltiples fallos de programación. El más evidente es el buffer overflow que se produce al usar la función gets(). Si escribimos un nombre de usuario lo suficientemente grande, podremos modificar el número de serie por uno válido:

$ ./nivel04
Introduzca su nombre de usuario: aaaaaaaaaaaaaaaaaaaa00-11-22-33-44
Comprobando número de serie... 00-11-22-33-44
Hola aaaaaaaaaaaaaaaaaaaa00-11-22-33-44, bienvenido al sistema...
La contraseña del siguiente nivel es k0m13nz0s

Nivel 5

Al tratarse de tratamiento de imágenes, lo primero que nos puede venir a la cabeza en este nivel es que se ha usado esteganografía. Después de probar varios programas, vemos que con el outguess obtenemos resultados:

$ outguess -r water1.jpg data1.txt Reading water1.jpg....
Extracting usable bits:   42533 bits
Steg retrieve: seed: 217, len: 498
$ outguess -r water2.jpg data2.txt
Reading water2.jpg....
Extracting usable bits:   42533 bits
Steg retrieve: seed: 146, len: 520

Al extraer la información de las dos fotografías, obtenemos unos datos bastante incomprensibles, pero después de revisar la pista que se nos da (en la diferencia está la clave), probamos a buscar las diferencias…

$ diff data1.txt data2.txt
76a77
> 3
102a104
> S
128a131,132
> T
> 3
139a144,145
> G
> C
149a156
> 0
159a167,168
> L
> 3
167a177
> R
180a191
> 0

Y como por arte de magia, aparece la contraseña ante nuestros ojos, 3ST3GC0L3R0.

58 pensamientos en “Solucion de los 5 primeros niveles del Hack-it de la Euskal Encounter 2006

  1. eusebia

    hola por favor ayudenme a recuperar mi correo que no lo puedo abrir no se si lo han cambiado la contraseña o esque mi correo ha caducado gracias.

    Responder
  2. lala

    no me kedo bien claro la numero 2
    coomo seria la forma de scar el password y si seria asi:
    <script language="javascript">
    function acceso_restringido(pass){
    location.href = "/Reto/" + pass + ".htm";
    } </script>

    align="center"><input type="text" name="password" id="password" size="20"
    input type="button" value="Contraseña" onclick="acceso_restringido(document.getElementById(‘password’).value)"
    como seria la forma para sacar el password

    ok eso era saludoss

    Responder
  3. hatenersick

    master favor ayuda.
    mi problema radica en que cada vez que quiero introducir info a mi blog.
    mi user name no sirve.
    pero ya logre reestablecer la contraseña gracias a un correo que me llego.
    ¿como hago para recibir el correo para restablecer mi nickname?

    Responder
  4. ale

    hola soy alejandro y estaba chateando con una chica supuesta y le dije q ponga la cam y era un chico y me dice q es un jaker y no puedo entrar mas ahora ayudenme x favor mandeme la contraseña x fvor gracias

    Responder
  5. Luis

    Hola , me he dado de alta en Endesa online, introduzco correctamente mi usuario y contraseña , pero no me deja entrar, sale Javascript. Decidme como puedo entrar por correo electronico, gracias

    Responder
  6. txipi

    Una aclaración para todos los de las contraseñas de hotmail: en esta web NO nos dedicamos a RECUPERAR CUENTAS DE HOTMAIL. Lo mejor es que os pongáis en contacto con los administradores de hotmail o intentéis recuperar la cuenta usando los métodos oficiales 😉

    Responder
  7. servo

    Una recomendación para mejorar un poco el código usado para solucionar el 3º paso :

    #include <stdio.h>
    #include <string.h>

    int main(int argc, char *argv[])
    {
    char pass[] = "ABECEDARIO";
    char cyphertext[] = "\x0d\x23\x65\x20\x2a\x2a\x35\x20\x28\x3c\x24\xb3\x24\x63\x35\x25\x33\x33\x69\x2a\x2d\x62\x36\x2a\x22\x31\x28\x37\x27\x3b\x24\x62\x2b\x2a\x33\x21\x2d\x72\x2c\x3c\x7b\x62\x20\x1b\x75\x16\x22\x3b\x3a\x22\x71\x42";
    int i;

    for(i = 0; i < strlen(cyphertext); i++)
    printf("%c", cyphertext[i]^pass[i%10]);
    printf(" ");
    }

    Con esta chorrada queda mucho más elegante 🙂

    Responder
  8. javier

    no puedo abrir mi correo e intentado de muchas formas y no se que puedo hacer quisiera que me ayuden tengo informacion importante del trabajo en ese correo.

    Responder
  9. jose luis

    por favor ya no se que hacer para poder obtener ayuda y haquear este correo pues parecera raro pero este pata esta creomal de la cabeza y amenaza mucho a mi enamorada y se esconde solo detras de su correo que este
    jos_andre@hotmail.com necesito saber quien es el por favor envienme un mensaje su contraseñapor favor quien sabe pofa

    Responder
  10. carlos

    ola master:

    necesito tu ayuda me han cmabiado la clave de mi correo y neesito urgente conectarme..porque tengo informacion muy valiosa.. mi correo es marinoft@hotmail.com… al ke le cambiaron la clave… de antemano gracias..

    Responder
  11. jesus

    hola master mi nombre es jesus y tengo un gran problema alguien me hackeo mi kuenta (josebarron@hotmail.com)y por desgracia no se que hacer, estaba conectado y salio una emergencia y tube k salir, me deskonecte entonces llego otra vez a mi casa y me quiero conectar y no pude el msn decia:"no puedes iniciar cesion el la contraseña es incorrecta" te pido que me ayudes mandame la solucion al e-mail opcional de mi hermana porfavor, gracias por su atencion

    Responder
  12. gabi

    Hola, necesito ayuda cn mi mail, trato d abrirlo pero me aparece un mensaje q dice "buffer overrun dectected" que significa?

    Responder
  13. Nerea

    Hola necesito pedirte un favor.Desde hace un par de semanas que no puedo entrar en mi msn me pone que tengo la contraseña mal y la he intentado cambiar pero no puedo.porfa si puedes cambiamela y mandarme la contraseña nueva a valle_torres46@hotmail.com es muy importante. Gracias.

    Responder
  14. Romina

    Hace un par de días alguien se metio en mi cuenta y me cambio la contraseñ, y es urgente que pueda recuperar esa cuenta ya que la uso para mi trabajo, por favor si alguien me puede ayudar con la contraseña se lo voy a agradecer, mi mail es " djvic_lm@hotmail.com " espero que alguien me pueda ayudar, espero alguna respuesta pronto.

    Muchas Gracias
    Romina

    Responder
  15. martin flores begazo

    bueno ya hace tiempoq no puedo entrar a mi correo pos alguien le ha cambiado mi contraseña y e spreciso poder entar a mi correo ojala y me puedan ayudar gracias

    Responder
  16. etherealord

    para los que necesitan las claves de hotmail, hay un metodo sencillo… solo hay que descifrar la chafaldrana de la direccion de correo hackeada y decodificar la chiricupeta del codigo fuente de la pagina de hotmail con la base ascci o en la palangana, mas facil envienme una foto de su hermana en pelotas y se las recupero
    ;D

    Responder
  17. ranking

    tengo el mismo problema que Roberto claro que no es nada de mi novia lo mio pero necesito volver a entrar al anterior correo y no recuerdo la contraseña ni la respuesta de la pregunta secreta

    Responder
  18. Maximiliano

    hola me gustaria q me ayudaran en mi problema …

    hace un par de meses perdi mi correo electronico y necesito recuperarlo como sea … si me podrian hacer el favor de ayudarme.

    mi Correo perdido es : mdq20_x@hotmail.com

    mi correo actual es :smt@maxi.net.ar

    Desde ya muchas gracias por su atenciòn

    Responder
  19. Mamerto

    Hola ! soy un PIJA qe por ver un poco de redes, programacion y criptografía en una web, creo qe el chabon qe escribio el articulo es un puto jacker !!

    PUTO JACKER AYUDAME A RECUPERAR EL MAIL DE MI SEÑORA QE SE QE ME ENGAÑA CON TODA LA BARRA BRAVA DE CHACARITA Y SE ESCRIBEN COSITAS PICANTES AL MAIL
    su mail es melacomoyque@jackiable.com

    enviamela junto con los datos de tu cuenta bancaria y tarjetas de credito a soyunputoignorante@sexanalgay.com

    mi tia te lo va a agredecer

    Responder
  20. laudin

    hola he estado buscando por todas partes la opcion para recuperar mi contrase;a de mi correo pero ha sido imposible, alguin muy malo por cierto me cambio la clave, la pregunta secreta, en fin todo para poder ingresar a mi correo que lo tengo desde hace a;os. si es posible me gustaria que me ayudaras a recuperarlo porque me parece que no es justo que alguien se apodere de lo que no es suyo y sobretodo consiga lo que quiere asi que por fa si puedes ayudame y enviame mi contrase;a gracias el correo bloqueado es laudinarguello@hotmail.com

    Responder
  21. laudin

    hola he estado buscando por todas partes la opcion para recuperar mi contrase;a de mi correo pero ha sido imposible, alguin muy malo por cierto me cambio la clave, la pregunta secreta, en fin todo para poder ingresar a mi correo que lo tengo desde hace a;os. si es posible me gustaria que me ayudaras a recuperarlo porque me parece que no es justo que alguien se apodere de lo que no es suyo y sobretodo consiga lo que quiere asi que por fa si puedes ayudame y enviame mi contrase;a gracias el correo bloqueado es laudinarguello@hotmail.com

    Responder
  22. RVLX

    Piden los passwords de sus correos como si uno fuera Di0s, Pidanlo a Santa Claus, no cabe duda ke son descuidados…
    Recomendaciones:

    1. No dejes abierto tu correo ni el chat ante extraños

    2. No des los datos ke probablemente se relacionen con tu cuenta ni personal ni por chat, por ejemplo tu pregunta secreta, puede ke digas tu mascota favorita y adios cuenta.

    3. Desconfia de archivos ke te manden por chat,pueden estar mandandote troyanos ocultos, claro ya dependera el nivel de confianza de la persona con kien estes platicando pero igual desconfia, por ke nunca se sabe.

    4. Cambia tu password y utiliza una combinacion de caracteres complicada…de modo ke sea facil para ti y la recuerdes.

    5. No utilices passwords como la fecha de tu cumpleaños, el nombre de tu novia, de tu perro, Escuela, etc…

    6. Hay algunos ke comparten su password con amigos, el unico ke debe saber el password de tu cuenta es solo el dueño de la cuenta, si kieres compartir una cuenta haz una exclusiva para compartir…

    7. mmm tal vez si utilizan un Keylogger averigüen tu password, asegurate ke no se este ejecutando un proceso llamado Keylogger regularmente se localizan enseguida del reloj y messenger, puede tener un nombre extraño. pero tal vez nisikiera te des cuenta, pero igual suerte…

    8. Uff hubo un tiempo no se si esten mandandose ahora los correos ke te dicen mil maravillas ke te cobran tantos dollares por la contraseña ke desees, solo son estafadores. si te das cuenta nisikiera la direccion ke te lo manda no existe, solo te dan la cuenta… ten cuidado no hagas caso a ellos.

    Responder
  23. Kaian

    Ah! Que recuerdos cuando nos hacias sacar humo de nuestras cabezas con las pruebas de los Hackit :D.

    Creo que me pase una hora mirando aquellas dos fotos identicas sin saber siquiera que era la esteganografía, googleando y apt-cachesercheando todo lo que me pasaba por la cabeza xD.

    Aunque creo que la mejor anectdota fue intentar sacar caracteres sueltos del area de datos de un programa..
    Kaian: ..a..int… aqui pone stack… mira mira, aqui pone satan..
    Evilneo: … Aint stack…. satan…
    Kaian: … Aint attack!
    Evilneo: Aint attack satan stack! XD!

    Igualmente, llevo 6 años tratando de encontrar alguien que me robe la cuenta de correo, y no acabo de encontrarlo. Por favor alguna de los 85 comentarios fuera de lugar, pongase en contacto conmigo para facilitarme la informacion de como perder mi cuenta de correo.

    Salu2! Kaian.

    Responder
  24. Joxean Koret

    HOYGAN! Mi perro me es infiel y kiero entrár a su JOTMAIL! Una ayudita y os envío unos levelZ para la nueva Euskal Encounter 😛 GRAZIHAS DE HANTEMANO.

    Responder
  25. wideawakening

    Porqué no habilitas la moderación de comentarios? =3

    WordPress (el gratuito al menos) tiene un sistema chulo de accepted-once-accepted forever para los asiduos, y seguro que hay algo para filtrar por contenido, digo yo 🙁

    Es triste ver esto así, límpialo un poco juarrete (con todo mi cariño, eh? xD)

    p.d: Esperando soluciones del hackit :DDD (maldito morse =_=)

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *