Les Buffers Overflows Techniques et évolution par Raphaël GERMON
Le ROP
Explications
On n'a juste besoin de séquences de bits utilisables dans les pages de la mémoire exécutable.
Vu que toutes les instructions exécutées appartiennent au programme original il n'y a pas besoin de faire d'injection de code. Un ensemble d'instructions combinées forme un gadget, ils permettent de faire des actions de haut niveau comme écrire dans la mémoire, faire des calcules (ADD/SUB/AND/XOR/OR) sur des valeurs à une adresse mémoire et aussi appeler une fonction sur des bibliothèques partagées.
Exemple de gadget :
Pour reprendre mon exemple du return-to-libc c'est comme si cette fois on contrôlait l'ordre des lettres dans le mot pour en former des nouveaux.