È possibile tornare ad un attacco di libc senza la funzione di sistema?

5

Ogni ritorno all'attacco di overflow del buffer libc che ho visto utilizza la funzione system per eseguire comandi. Ho un eseguibile con DEP abilitato (non posso eseguire sullo stack) e la funzione system non è collegata in (almeno, non credo che sia. Esecuzione dell'eseguibile con gdb e digitando p system genera un messaggio No symbol "system" in current context. .

È possibile eseguire ancora un attacco di overflow del buffer per eseguire comandi arbitrari con questo tipo di eseguibile? Ci sono tutorial o documenti di ricerca su questo argomento?

AGGIORNAMENTO: sono riuscito a sfruttare il binario utilizzando questo strumento: link

    
posta gsingh2011 12.11.2013 - 02:28
fonte

1 risposta

3

Questa è la principale limitazione nota dell'attacco ' ret-in-libc ', puoi usare solo le funzioni che sono usate dal programma attaccato. Inoltre, negli attacchi ' ret-into-got ' sei limitato solo a funzioni che sono già state utilizzate prima di eseguire l'attacco (la posizione della funzione deve essere stata risolta nel GOT).

Ma potresti usare funzioni simili se sono presenti. Funzioni come execve o qualsiasi funzione della stessa famiglia possono essere utilizzate (tuttavia, gli argomenti sono un po 'più complessi da impostare).

Giusto per concludere, questo è anche a causa di questa limitazione che il ' return-oriented-programming ' è stato un grande passo avanti poiché è stato dimostrato che è completo di Turing ( cioè in grado di emulare qualsiasi tipo di funzione se hai abbastanza gadget nella sezione .text ). Vedi il famoso articolo " La geometria di Innocent Flesh sull'osso: Return-in-libc senza chiamate di funzione (sulla x86) "di Hovav Shacham .

    
risposta data 12.11.2013 - 07:44
fonte

Leggi altre domande sui tag