Leviathan Walkthrough: level2

mayo 11, 2011 a las 1:59 pm | Escrito en Wargames | Deja un comentario
Etiquetas: , , , ,

Bueno ya hemos superado el primer nivel, pudimos comprobar que era un nivel muy fácil para calentar un poco los motores. Vamos a subir un poco el nivel (aunque no demasiado) y empecemos con el segundo nivel.

Lo primero que se nos puede ocurrir es echar un vistazo al home de level2 a ver que podemos encontrar, aunque esta vez no tendremos suerte. Si recordamos el mensaje que aparace cuando nos conectamos al servidor (“Most levels can be found in /wargame“) nos dará por buscar en el directorio /wargame.

level2@leviathan:~$ cd /wargame
level2@leviathan:/wargame$ ls -la
total 48
drwxr-xr-x  2 root   root   4096 2008-03-26 02:41 .
drwxr-xr-x 22 root   root   4096 2008-03-26 02:54 ..
-r-sr-s---  1 level3 level2 7738 2008-03-26 02:31 check
-r-sr-s---  1 level5 level4 8090 2008-03-26 02:33 level4
-r-sr-s---  1 level7 level6 7696 2008-03-26 02:34 printfile
-r-sr-s---  1 level4 level3 8051 2008-03-26 02:51 prog
-r-sr-s---  1 level8 level7 7661 2008-03-26 02:35 sphinx

Y vemos algo interesante, una serie de ejecutables setuideados. ¿Y eso que és? Pues un mecanismo para permitir ejecutar programas con un usuario diferente al nuestro. Si quieres comprobarlo, prueba a ejecutar check, que es el único que podemos ejecutar como usuario level2, páusalo (Ctrl+z) y haz un ps:

level2@leviathan:/wargame$ ./check
password:
[1]+  Stopped                 ./check
level2@leviathan:/wargame$ ps awufx | grep -v grep | grep check
level3    2309  0.0  0.1   1428   296 pts/0    T    22:44   0:00  |  \_ ./check

Vemos que ese programa se está ejecutando como level3. Estupendo, dado que ese usuario si puede leer /home/level3/.passwd :)

Bien, si ejecutamos el binario vemos que nos pide una contraseña, podemos probar con cualquier cosa pero no nos va a funcionar (obvio).

level2@leviathan:/wargame$ ./check
password: vidimensional
Wrong password, Good Bye ...

En un caso como este lo primero que se nos debería ocurrir sería mirar que hace el programa con un debuger o similar, obviamente usar el gdb para esto me da una pereza terrible así que, para empezar, podemos usar alguna herramienta más sencilla como strace o ltrace.

level2@leviathan:/wargame$ ltrace ./check
__libc_start_main(0x8048464, 1, 0xbffffad4, 0x8048580, 0x8048530 <unfinished ...>
printf("password: ")                                                                                     = 10
getchar(0x8048638, 0xb7fe0ff4, 0xbffffa28, 0x80483f0, 0xb7fe0ff4password: vidimensional
)                                        = 118
getchar(0x8048638, 0xb7fe0ff4, 0xbffffa28, 0x80483f0, 0xb7fe0ff4)                                        = 105
getchar(0x8048638, 0xb7fe0ff4, 0xbffffa28, 0x80483f0, 0xb7fe0ff4)                                        = 100
strcmp("vid", "sex")                                                                                     = 1
puts("Wrong password, Good Bye ..."Wrong password, Good Bye ...
)                                                                     = 29
+++ exited (status 29) +++

Con ltrace vemos que lo que hace el programa es comprobar si las tres primeras letras de la contraseña son “sex”, así que vamos a probar…

level2@leviathan:/wargame$ ./check
password: sex
sh-3.1$ whoami
level3
sh-3.1$ cat /home/level3/.passwd
gb5bRGqI

Efectivamente, una vez ponemos la contraseña el programa lanza una shell con los permisos del usuario level3, así que sólo es necesario hacer un cat del fichero de contraseñas del usuario level3.

Bueno, este tampoco ha sido demasiado complicado, aunque ya hay que tener un par de ideas claras sobre sistemas *nix.

Advertisement

Dejar un comentario »

RSS feed para los comentarios de esta entrada. URI para TrackBack.

Deja un comentario

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

Logo de WordPress.com

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

Twitter picture

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

Facebook photo

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

Connecting to %s

Blog de WordPress.com. | Theme: Pool by Borja Fernandez.
Entradas y comentarios: feeds.

Seguir

Get every new post delivered to your Inbox.