Shellcode — Code machine d'exploitation

Exploit ASM

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.