In che modo esattamente il codice vulnerabile format string legge i dati dallo stack?

2

Se abbiamo un codice come printf(buffer) in cui l'utente può controllare il buffer, capisco che l'utente potrebbe inserire qualcosa come AAAA% 08x% 08x% 08x ... e come risultato ricevere il contenuto di una parte dello stack.

Comprendo che questo è dovuto al fatto che l'utente può ingannare printf nel credere che deve elaborare più argomenti di quelli effettivamente forniti e quindi li induce a leggere i dati dallo stack in cui dovrebbero essere stati gli argomenti.

Ma dato che gli argomenti su printf vengono inseriti nello stack prima che la funzione venga chiamata con il formato stringa premuto per ultimo, come è possibile che printf legga anche la parte "AAAA" dell'input dell'utente dallo stack? Non accedeva agli argomenti "inesistenti" come EBP + 12, EBP + 16, EBP + 20 ... e quindi legge i dati solo più in alto nello stack (in indirizzi di memoria più alti)?

    
posta pineappleman 16.04.2016 - 01:03
fonte

0 risposte

Leggi altre domande sui tag