20/05/11 16:11
ElCobra91
Hedo potresti spiegarmi dv sbaglio?
aaa
20/05/11 22:34
pierotofy
L'idea presentata nella guida è corretta, ma tu stai facendo l'assunzione sbagliata che la tua piattaforma è configurata esattamente come l'autore della guida.
0x00401294 è un indirizzo che funziona sulla sua piattaforma... tu potresti aver a che fare con una nuova versione del compilatore che alloca la memoria in maniera diversa. Dopo aver compilato il primo esempio, devi disassemblarlo e scoprire:
1) Qual'è l'indirizzo dove inizia la funzione che vuoi eseguire con l'exploit.
2) Lo spazio che il compilatore ha assegnato all'array var (così da vedere quanti bytes devi inserire prima di oltrepassare il limite). Fare l'assunzione che 28 bytes siano sufficienti è sbagliata.
Pitagora... no. Solitamente il sistema operativo cercherà di impedire che un programma acceda a parti di memoria che non sono sue. Puoi benissimo fare riferimento ad un area di memoria a cui puoi accedere. E l'area non viene assegnata dal "computer"... ma dal sistema operativo. Solo una precisazione.
Ultima modifica effettuata da pierotofy 20/05/11 22:38
21/05/11 12:44
ElCobra91
X piero:
Ho disassemblato la funzione e letto il suo indirizzo e ho calcolato il numero dei bytes oltre i quali va in overflow.
x Hedo:
Ho letto gli articoli e cercato su internet altre info e in pratica ci sono numerose considerazioni di cui nn ho tenuto conto come il fatto di considerare il byte null di fine stringa o che a causa dell'architettura little-endian quando passo l'inidirizzo lo devo scrivere diversamente.Proverò a tenere conto di queste cose e ci riprovo.
Grazie a tutti per l'aiuto!!
aaa