attacco return-to-libc

3

Stavo provando a tentare un attacco di overflow del buffer return-to-libc per l'assegnazione della sicurezza del mio Software Computer. Per quanto ne so, possiamo fare questo tipo di attacchi indipendentemente dalle misure di protezione dello stack come canaries e non-executable stack . Questo perché le funzioni libc non risiedono nello stack e abbiamo solo bisogno di spostare il flusso di controllo del nostro programma sovrascrivendo l'indirizzo di ritorno con libc function address e passando argomenti appropriati. Questa figura sembra riassumere la procedura immagino.



Qual è il mio dubbio, secondo il figura per la seconda parte, è il frame dello stack dato per la funzione libc o è solo per una funzione definita nel programma dell'utente stesso? Non riesco a capire il bisogno di fake_ret . Non possiamo semplicemente sovrascrivere l'indirizzo di ritorno della nostra funzione sovrascrivendo EIP con l'indirizzo di dire unlink e gli argomenti possono essere inseriti nel buffer di funzione dell'utente che può essere utilizzato per passare alla funzione unlink ? < br>
Si noti che con l'uso dell'utente (qualcosa), mirano a indicare (qualcosa) che è definito dall'utente stesso nel suo programma. Grazie.

    
posta yellow_flash 09.02.2016 - 05:36
fonte

1 risposta

2

Puoi scrivere un frame per qualsiasi chiamata di funzione, non deve essere system() . Tuttavia la maggior parte degli exploit mirerà a una shell, se possibile. L'indirizzo fake_ret è semplicemente il punto in cui verrà eseguita l'esecuzione dopo la chiamata system() . Se hai appena messo \x41\x41\x41\x41 , segfault. Se lo puntate su exit() uscirà con garbo, o potreste puntarlo a un numero di pop register seguito da un ret per controllare l'esecuzione verso il basso nello stack (ROP).

    
risposta data 09.02.2016 - 08:36
fonte

Leggi altre domande sui tag