BufferOverflow: ESP e violazione di accesso

1

Il contesto:

Ho una piccola domanda riguardante ESP e violazione di accesso. Ho appena sfruttato un buffer overflow, con poco spazio dopo ESP. Così ho fatto questo:

parte 1: NOP SLED

parte 2: il mio shellcode: un carico utile reverse_tcp codificato shikata_ga_nai, da metasploit

parte 3: qualche altro NOP per riempire lo spazio

parte 4: 4 byte sovrascrivendo l'EIP salvato nello stack. Questo è l'indirizzo di un'istruzione ESP di salto in un segmento non protetto da ASLS.

parte 5: [Questo è il punto in cui l'ESP punta al momento dello schianto] Ho alcuni NOP

parte 6: la prima fase del mio exploit:

per il primo stadio, evitando \ x00 byte, l'ho fatto:

mov eax,esp
sub eax,944 (point to the part1 : the NOP sled)
jmp eax

Ha funzionato bene: stack viene sovrascritto, EIP va all'istruzione jmp ESP, arriva nella parte 6 dell'exploit, salta a EAX, che punta alla parte 1 dell'exploit, e quindi esegue il NOP per arrivare allo shellcode.

problema: ho ricevuto alcune violazioni di accesso all'interno del decodificatore shikata_ga_nai.

L'ho risolto aggiungendo un esp esp, eax nella prima fase:

mov eax,esp
sub eax,944 (point to the part1 : the NOP sled)
mov esp,eax
jmp esp

E ha funzionato come un fascino. Ciò significherebbe che non si può giocare con la memoria in indirizzi inferiori a ESP.

La domanda:

ESP ha davvero qualcosa a che fare con il permesso di lettura / scrittura dentro (al di fuori effettivamente) lo stack? La memoria è stata assegnata, quindi l'ho usata. EBP o altro registro ha nulla a che fare con la violazione di accesso?

    
posta Jeremy 09.07.2017 - 21:20
fonte

1 risposta

0

No, entrambi i registri puntano semplicemente allo stack degli indirizzi, con ESP che è la cima dello stack e EBP la base del frame dello stack (di solito).

    
risposta data 14.07.2017 - 04:21
fonte

Leggi altre domande sui tag