Un parcours d'apprentissage de l'exploitation via les CTF
Un parcours légal et progressif du C et de l'assembleur aux défis pwn de CTF : quoi apprendre et dans quel ordre, plateformes de pratique, règles de labo.
Un parcours légal et progressif du C et de l'assembleur aux défis pwn de CTF : quoi apprendre et dans quel ordre, plateformes de pratique, règles de labo.
Pourquoi les langages sûrs pour la mémoire éliminent des classes de bugs, ce que garantit la propriété de Rust, et où unsafe et le FFI restent risqués.
Écrire un harnais de fuzzing, le compiler avec des sanitizers, lancer libFuzzer et AFL++, gérer corpus et dictionnaires, et fuzzer en continu en CI.
Trier les crashs natifs en défenseur : sens de SIGSEGV et SIGABRT, messages d'abort de glibc, gdb et core dumps, rapports ASan, WinDbg, et priorisation.
Comment fonctionnent ASan, UBSan, MSan, TSan et HWASan, quels flags et options utiliser, comment lire un rapport ASan ligne par ligne, et les lancer en CI.
L'intégrité du flot de contrôle sur les arêtes avant et arrière, de Clang CFI à Intel CET et l'authentification de pointeur Arm, et ses limites.
Ce que protège chaque mitigation classique, les drapeaux GCC et Clang qui l'activent, son coût, et comment vérifier un binaire avec checksec et readelf.
Comment débordement d'entier, troncature et erreurs de signe mènent à la corruption mémoire, et pourquoi les chaînes de format contrôlées sont risquées.
Comment les bugs mémoire du tas corrompent l'allocateur et l'état des objets, pourquoi le use-after-free est si dangereux, et les défenses qui les arrêtent.
Pourquoi écrire au-delà d'un tampon de pile est dangereux, les schémas C qui le causent, comment les compilateurs et sanitizers le détectent, et les corrections et mitigations qui le contiennent.
Visite guidée pour défenseur de l'espace d'adressage d'un processus Linux : segments ELF, pile et conventions d'appel, tas, mmap, et le rôle des permissions.