Sto seguendo un tutorial per scrivere un semplice overflow del buffer. Ho conoscenza (di base) dell'assemblaggio e dello stack. Ho scritto un overflow del buffer basato sullo stack e l'ho capito. Il programma che sto sfruttando questa volta ha abilitato NX, il che significa che non è possibile eseguire codice dallo stack o una variabile di ambiente. L'autore di questo tutorial suggerisce quindi di dichiarare una variabile di ambiente:
export $BINSH="/bin/sh"
e il payload alimentato al buffer overflow sarà l'indirizzo del 'sistema' nel programma, seguito dall'indirizzo 'exit' nel programma e infine dall'indirizzo della nostra variabile di ambiente:
payload is : &system - &exit - &BINSH
Sono riuscito a far funzionare l'exploit ma non capisco la teoria alla base del payload. Sfortunatamente non è spiegato nel tutorial (che può essere trovato qui ).
Perché sovrascrivo EIP con l'indirizzo su "sistema" (e a cosa corrisponde questo indirizzo)?
Come si inserisce l'indirizzo nella mia variabile di ambiente contenente / bin / sh come la terza parola nel payload lo esegue?
PS: Linux, 32 bit. Intel