diff --git a/README.md b/README.md index 86ceb9e..71c77ab 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,18 @@ Utilisez `clang` pour compiler celui-ci : clang -o rop vulnerable.c -m64 -fno-stack-protector -Wl,-z,relro,-z,now,-z,noexecstack -static ``` +_Explication :_ +> 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 ? 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 :