Il puntatore EIP viene sovrascritto ma EBP rimane intatto

2

Stavo provando un semplice exploit di overflow del buffer dello stack creando un file dannoso crash.m3u.

come puoi vedere il puntatore EIP viene sovrascritto da "A" ma EBP non è cambiato. non si suppone che EBP venga sovrascritto prima dell'EIP ??

    
posta Abbas Javan Jafari 23.02.2014 - 18:13
fonte

1 risposta

1

Bene, i registri non sono valori nella memoria in attesa di essere sovrascritti dal buffer!

Nel contesto di un buffer overflow, non si limita a continuare a scrivere fino a quando non si raggiunge una "posizione" del registro EIP: al contrario, si sostituiscono i valori nello stack e uno di essi potrebbe diventare l'indirizzo di ritorno della propria funzione. Dopo aver sovrascritto lo stack, l'esecuzione riprende come se nulla fosse accaduto. Le istruzioni vengono eseguite e, a seconda di cosa sono, EBP può essere modificato o meno.

Infine, purché non si sia verificata alcuna eccezione nel frattempo, si raggiunge il ret della funzione. Questo è quando il valore di ritorno viene letto dallo stack e spostato in EIP.

Quindi nel tuo caso, se l'istruzione ret non viene mai raggiunta, ci sono ancora alcuni modi per ottenere l'esecuzione del comando. Il candidato più probabile qui è attraverso manipolazione SEH .

Buon divertimento

    
risposta data 24.02.2014 - 12:55
fonte

Leggi altre domande sui tag