Format string attack: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Introduzione: Aggiunto il collegamento a "C (linguaggio di programmazione)" |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. |
||
Riga 4:
== Introduzione ==
Il tipo di attacco Format String è una classe di vulnerabilità scoperte nel 1999, presenti prevalentemente in [[Linguaggio di programmazione|linguaggi di programmazione]] imperativi come il [[C (linguaggio di programmazione)|C]]. Un Format String Attack è formato da tre componenti fondamentali:
* Format Function: in ANSI C è una funzione che converte una variabile di tipo primitivo, in una stringa user-friendly cioè leggibile dall’uomo.
Riga 72:
Vogliamo leggere aree di memoria vicino a questo indirizzo ‘0x08480110’:
* Per prima cosa bisogna codificare l'indirizzo in una stringa a [[32 bit]] secondo la regola little-endian.
* l'indirizzo "0x08480110" verrà quindi ribaltato e separato da caratteri speciali diventando: "\x10\x01\x48\x08"
La codifica dell’indirizzo scelto in una stringa a 32 bit "\x10\x01\x48\x08" dove il carattere "\x10" inserito in una stringa dice al compilatore di mettere un carattere esadecimale "0x10" nella posizione corrente.
Riga 78:
Il carattere "\x" dice al compilatore di mettere il carattere esadecimanle "0x10" nella posizione corrente sullo stack. Altrimenti il valore ASCII salvato nella stringa sarebbe ‘1’ e ‘0’ i cui rispettivi valori ASCII sono ‘49’ e ‘48’, che risulterebbe errato.
Quindi la seguente invocazione andrà a leggere memoria dall’indirizzo che gli abbiamo fornito finché non raggiunge un NULL byte. Incrementando
'''Scrivere un intero in (qualsiasi) locazione di memoria'''
|