Shellcode — Code machine d'exploitation
★★★★★
Définition
Un shellcode est une courte séquence d'instructions machine injectée et exécutée lors de l'exploitation d'une vulnérabilité, typiquement pour ouvrir un shell. Il doit souvent être position-independent et sans octets nuls.
Génération & analyse
# Générer (msfvenom)
msfvenom -p linux/x64/exec CMD=/bin/sh -f hex -b '\x00'
# Désassembler un shellcode
echo -ne '\x48\x31...' | ndisasm -b64 -
objdump -D -b binary -m i386:x86-64 sc.bin
# Tester en l exécutant
pwntools: run_shellcode(asm(shellcraft.sh())) Contraintes
Éviter les bad chars (souvent \x00, \x0a), rester court, gérer l'absence d'adresses absolues (utiliser RIP-relative), et parfois encoder/decoder pour passer les filtres. pwntools shellcraft fournit des shellcodes prêts à l'emploi.