ALICELAB
// association de cybersécurité // perpignan & occitanie
BUFFER OVERFLOW
> 3 exercices progressifs en C (Linux x86-64)
> prérequis : bases du C, notions de pile et de GDB
> outils : gcc, gdb, python3, pwntools
Série de travaux pratiques pour comprendre et exploiter un buffer overflow.
Chaque exercice est accompagné d'un fichier .c
commenté et d'un guide d'exploitation pas à pas.
EXERCICES
exercice 01
vuln1 — Observer le débordement
Programme volontairement vulnérable : la fonction
read()
accepte 200 octets dans un buffer de 64. Observer comment les données débordent et
écrasent les données adjacentes sur la pile. Analyse avec GDB.
gcc vuln1.c -o vuln1 -fno-stack-protector -z execstack -no-pie
exercice 02
ret2win — Rediriger l'exécution
La fonction
secret() n'est jamais appelée dans
le flot normal du programme. Objectif : écraser le pointeur de retour (RIP) pour y
rediriger l'exécution. Introduit le calcul d'offset et la construction d'un payload.
gcc ret2win.c -o ret2win -fno-stack-protector -no-pie
exercice 03
shellcode — Injecter du code arbitraire
Injecter un shellcode x86-64 pour obtenir un shell
/bin/sh.
Introduit le NOP sled, l'adressage de la pile, et la désactivation temporaire de l'ASLR.
Utilise pwntools pour la construction du payload.
gcc shellcode.c -o shellcode -fno-stack-protector -z execstack -no-pie
TÉLÉCHARGER LES SOURCES
RÉFÉRENCES
- Root-Me — challenges exploitation de binaire
- Hacking: The Art of Exploitation — Jon Erickson (No Starch Press)
- pwntools — framework Python pour l'exploitation