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.