Durante lo sfruttamento di un binario, vorrei sapere qual è la differenza tra ROP (Return-oriented programming) e ret2libc?
Non ho trovato una risorsa che risponda a questa domanda
Grazie
Essenzialmente ret2libc è in qualche modo un exploit ROP, poiché si crea un nuovo stackframe per chiamare la funzione di sistema ritornando alla libreria libc e aggirando uno stack non eseguibile.
Un ROP in generale funziona in modo simile, salti a frammenti di codice (chiamati gadget) che ritornano a un certo punto e "costruiscono" te stesso il codice che vuoi eseguire combinando quei frammenti. Si programma letteralmente il codice che si desidera eseguire, creando nuove routine che prima non erano presenti nel codice. ret2libc utilizza la funzione di sistema per ottenere una shell.
Leggi altre domande sui tag buffer-overflow