Level 5 –> Level 6

ssh leviathan6@leviathan.labs.overthewire.org -p 2223
Password: UgaoFee4li

Observamos que en este reto nos solicita un número de 4 dígitos:

leviathan6@leviathan:~$ ./leviathan6
usage: ./leviathan6 <4 digit code>

Inventándonos el número y pasándolo por ltrace, vemos que realiza la función atoi:

leviathan6@leviathan:~$ ltrace ./leviathan6 2222
__libc_start_main(0x804853b, 2, 0xffffd774, 0x80485e0 <unfinished …>
atoi(0xffffd8ab, 0, 0xf7e40890, 0x804862b) = 2222
puts(«Wrong»Wrong
) = 6

Creamos un fichero pass.sh para realizar fuerza bruta y intentar adivinar el código. Básicamente, realizamos un bucle for con todas las combinaciones posibles desde 0000 hasta 9999, y vamos ejecutando el fichero en cada iteración.

leviathan6@leviathan:/tmp$ for number in {0000..9999}; do ./leviathan6 $number; > pass.sh
leviathan6@leviathan:/tmp$ chmod +x pass.sh

Después de la fuerza bruta, realizamos un whoami:

$ whoami
leviathan7

Obtenemos el password:

$ cat /etc/leviathan_pass/leviathan7
ahy7MaeBo9