Ho lavorato su Return-to-libc Attack Lab di SEED ( Descrizione e attività del laboratorio ). L'ambiente è Ubuntu 12.04 a 32 bit. Si prega di prendere in considerazione il seguente codice:
/* This program has a buffer overflow vulnerability. */
/* Our task is to exploit this vulnerability */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int bof(FILE *badfile)
{
char buffer[12];
/* The following statement has a buffer overflow problem */
fread(buffer, sizeof(char), 40, badfile);
return 1;
}
int main(int argc, char **argv)
{
FILE *badfile;
badfile = fopen("badfile", "r");
bof(badfile);
printf("Returned Properly\n");
fclose(badfile);
return 1;
}
Ho trovato gli indirizzi desiderati, progettato badfile in modo che cambi il contenuto della pila come nello schizzo qui sotto e controllato con il debugger (source ):
[-] Buffer overflow doing return-to-libc and executing system function
1 2 3
|---------------------------|------------|--------------|------------|
| buffer | system | fake_ret | /bin/sh |
|---------------------------|------------|--------------|------------|
args EBP EIP
Sono stato in grado di aprire la shell ma per qualche motivo non ho ottenuto il privilegio della root:
[02/14/2018 16:22] seed@ubuntu:~/Documents$ gdb -q retlib
Reading symbols from /home/seed/Documents/retlib...done.
(gdb) r
Starting program: /home/seed/Documents/retlib
$ whoami
seed
$ id
uid=1000(seed) gid=1000(seed) groups=1000(seed),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),124(sambashare),130(wireshark)
$
Ho controllato il programma vulnerabile ed è stato compilato correttamente (secondo le istruzioni del laboratorio), il programma è Set-UID:
[02/14/2018 16:35] seed@ubuntu:~/Documents$ ls -l retlib
-rwsr-xr-x 1 root root 9712 Feb 11 06:41 retlib
Qualcuno può spiegare perché non ho avuto il privilegio della radice dopo aver aperto la shell?
Grazie mille in anticipo.