ROP: trovare un pivot di stack utile

1

Sto provando a scrivere una catena rop per bypassare il dep su Windows 7 x64 SP1.

Sto lavorando su un exploit di sovrascrittura SEH e quindi, in primo luogo, ho bisogno di tornare al mio buffer dopo che l'eccezione è stata attivata e l'ESP è stato spostato. Il mio problema è che non riesco a trovare un buon gadget stackpivot a causa di badchar e distanza troppo grande di gadget esistente che potrei usare per tornare al buffer.

Durante la sovrascrittura posso vedere il registro ECX che punta nel mio buffer e conosco l'offset. Ma mi sembra che il suo valore sia cambiato nello stesso momento in cui ESP viene spostato. Quindi, non posso tornare indietro nel mio buffer per avviare la mia catena di rop.

Come posso avvicinarmi per risolvere questo problema? Eventuali suggerimenti ?

    
posta Kartone 27.07.2017 - 22:23
fonte

1 risposta

1

Mi sembra di avere lo stesso problema ma sono riuscito a farlo funzionare nel mio caso. Il modulo con overflow aveva DEP abilitato quindi pensavo che non avrebbe funzionato.

Tutto ciò che ho fatto è stato puntare l'EIP su un JMP ECX in nSEH e SEH solo per essere sicuri, ma non funzionava.

Dopo aver pensato che la speranza fosse persa, mi sono reso conto che nel mio caso c'era un'eccezione irrecuperabile e non stava chiamando il mio gestore SEH perché il mio buffer overflow stava andando completamente fuori dai limiti dello stack dei moduli!

Ho scoperto la dimensione esatta dello stack corrente e ho modificato il mio overflow per utilizzare meno byte, quindi termina appena prima di lasciare lo stack frame.

Questo era tutto ciò che dovevo fare e il mio JMP ECX all'interno del SEH è stato ruotato con successo nel mio buffer e mi ha permesso di iniziare a eseguire la catena di rop su cui stavo lavorando. Spero che questo aiuti a rimanere sveglio tutta la notte a lavorarci sopra.

    
risposta data 07.09.2017 - 09:05
fonte

Leggi altre domande sui tag