Perdita di una voce GOT utilizzando return-to-printf @ plt

2

Ho un piccolo binario compilato come non-pie, ma ASLR è abilitato, quindi le librerie condivise sono randomizzate. Il mio piano era quello di filtrare qualsiasi indirizzo libc da GOT tramite il ritorno a plt, ma l'unico utile plt-stub che ho è un printf. In precedenza ho scritto un exploit di lavoro con questo metodo, quando potevo usare puts, ma in questo caso l'unico risultato che ottengo dopo il ritorno a printf @ plt è una stringa vuota.

Non sono riuscito a scoprire il motivo di questo comportamento finora; perché printf si comporta così? È persino possibile perdere un indirizzo in questo modo?

    
posta awerv 14.02.2018 - 02:06
fonte

1 risposta

1

Sì, penso che sia possibile perdere un indirizzo utilizzando printf . In puts è sufficiente passare un argomento alla funzione, la stringa che si desidera scrivere su stdout e, nel caso di un buffer-overflow, l'indirizzo della funzione che si desidera rilevare. In printf devi anche passare un identificatore di formato. C'è un write-up qui che dimostra esattamente questo.

    
risposta data 23.03.2018 - 23:05
fonte

Leggi altre domande sui tag