> clang : Le compilateur Clang est utilisé pour compiler le code source.
> -o rop : Spécifie le nom du fichier de sortie, "rop" dans ce cas.
> vulnerable.c : Le fichier source C à compiler, "vulnerable.c" ici.
> -m64 : Indique que l'on souhaite compiler en mode 64 bits.
> -fno-stack-protector : Désactive la protection du stack, ce qui peut être nécessaire pour les exploits.
> -Wl,-z,relro,-z,now,-z,noexecstack : Options passées au linker (ld) pour spécifier diverses options de sécurité :
> -z,relro : Active la relocalisation en lecture seule, renforcant la sécurité des structures de données.
> -z,now : Demande au linker de résoudre toutes les références symboliques immédiatement, plutôt qu'à la demande, renforçant ainsi la sécurité.
> -z,noexecstack : Empêche l'exécution de code à partir de la pile.
> -static : Indique au linker de lier statiquement les bibliothèques, plutôt que dynamiquement. Cela signifie que toutes les bibliothèques seront incluses dans le binaire final.
***1.*** Lorsque vous compilez ce premier programme, quelle fonction est annoncée comme dangereuse et présente la première faille pour effectuer l'attaque ROP ?
***1.*** Lorsque vous compilez ce premier programme, quelle fonction est annoncée comme dangereuse et présente la première faille pour effectuer l'attaque ROP ?
On remarque donc la présence d'un `buffer overflow`, nous allons désormais passer à ce binaire un gros buffer à l'aide de la commande suivante :
On remarque donc la présence d'un `buffer overflow`, nous allons désormais passer à ce binaire un gros buffer à l'aide de la commande suivante :