Perché negli attacchi con buffer overflow invertiamo l'indirizzo? Perché utilizziamo il formato little endian?
Why do we reverse the address/use little endian in buffer overflow attacks?
Questa affermazione non è sempre vera. Su un sistema big endian, non rappresenteresti i dati in little endian.
Su un sistema little endian, i valori sono rappresentati prima dal byte meno significativo. Quindi, in memoria, il numero intero a 32 bit 0xDEADBEEF
sarebbe rappresentato come 0xEFBEADDE
.
Quando si sfrutta un overflow del buffer e, ad esempio, si sovrascrive il puntatore di ritorno per passare a un indirizzo di memoria che si controlla, è necessario specificare questo indirizzo in little endian. Penso che la tua domanda si stia chiedendo perché la notazione little endian qui sia necessaria, ma questo è semplicemente perché è il formato che il processore capisce. A rischio di semplificazione eccessiva, si sta effettivamente iniettando il codice macchina in memoria, quindi deve corrispondere a tutto il resto. Se hai fornito un indirizzo in big endian, riceverai l'indirizzo sbagliato o forse uno completamente non valido.
Perché in generale lo stack va dalla parte superiore della memoria alla parte inferiore, quindi i "dati" che utilizzi sono sempre scritti dal basso verso l'alto.
Modifica
Ciòsignificachel'overflowdelbuffersiverificaaunindirizzoinferioreperquantoriguardaidatichestaicercandoditraboccare.
Controllaquesto
Leggi altre domande sui tag buffer-overflow