Bypass ASLR con perdita di informazioni

7

Lavorando attraverso il corso Modern Binary Exploitation di RPI qui . Sto avendo problemi con un esempio sullo sfruttamento di ASLR che dovrebbe utilizzare una perdita di memoria per ottenere informazioni sullo stack per calcolare l'offset per una chiamata di sistema. Ecco il codice:

#include <stdio.h>
#include <string.h>

/* gcc -pie -fPIE -fno-stack-protector -o aslr_leak2 ./aslr_leak2.c */

int main(int argc, char * argv[])
{

char leaky[16];

if(argc < 2)
{
    printf("Please provide two arguments.\n");
    return 1;
}

memcpy(leaky, argv[1], 16);

printf("Leaky buffer: %s\n", leaky);
printf("another round? : ");
fgets(leaky, 64, stdin);

return 0;
}

Non sembra un exploit stringa di formato per ottenere la perdita di memoria, quindi non sono sicuro di come dovrebbe funzionare. Se sto capendo correttamente, dovrei ottenere alcune informazioni dalla prima stampa che mi aiuta a sovrascrivere il puntatore di ritorno per creare un gadget ROP da. Sì, posso farlo all'interno di GDB se lo volessi, ma voglio essere in grado di non farlo.

    
posta Praet 14.08.2017 - 23:35
fonte

1 risposta

1

Fornendo 16 caratteri come primo argomento, riempirai il buffer che perde. Poiché non vi è spazio per un null che termina, la successiva stampaf echeggerà i 16 caratteri e continuerà a stampare qualsiasi cosa sia presente nello stack finché non incontra un carattere null terminante. Questa è la tua perdita di informazioni. Gli indirizzi dei gadget ROP possono quindi essere calcolati in relazione al tuo indirizzo / i trapelato.

    
risposta data 15.08.2017 - 10:28
fonte

Leggi altre domande sui tag