Qualcuno può spiegare cosa significa Ret2plt e come funziona?

2

Sto leggendo sul meccanismo di protezione da overflow dello stack come DEP, ed è scritto che Ret2plt e system() possono essere utilizzati per aggirarlo.

Che cos'è Ret2plt e come funziona? Non riesco a trovare una singola spiegazione di questo termine su google.

    
posta palerna 30.03.2017 - 10:21
fonte

1 risposta

1

In breve, vai all'indirizzo della voce PLT per la funzione = chiama la funzione.

Ret2plt è un concetto simile a Ret2libc per quanto riguarda DEP. Protezione esecuzione programmi / Protezione dati eseguendo alcune memoria non eseguibili (heap, stack ..). Questo funziona per impedire l'esecuzione di codice se il codice dannoso viene contrabbandato in quelle aree non eseguibili. Ma se potessimo chiamare codice che deve essere eseguibile, come il codice libc, allora sarà eseguibile. A livello di assemblaggio potremmo persino passare i nostri parametri.

Descritto qui: Rafal Wojtczuk, 1998 , il ritorno a PLT utilizza la tabella linkage della procedura per chiamare indirettamente le funzioni libc.

Il PLT è necessario perché il codice della libreria non è caricato in memoria a indirizzi fissi, di solito è il codice indipendente dalla posizione (PIC). Quindi le chiamate di procedura nelle librerie condivise sono fatte attraverso il PLT. Se torniamo nel PLT, chiameremo effettivamente quelle librerie condivise collegate dal PLT.

Il limite principale è che puoi chiamare solo funzioni che sono già state utilizzate dal programma, altrimenti non avranno un collegamento nel PLT.

    
risposta data 19.07.2017 - 19:47
fonte

Leggi altre domande sui tag