Post  |  Commenti

Post Meta

25th
JUL

Capire e sfruttare gli stack buffer overflows

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Posted by RedSend | Filed under Programming

Stavo cercando di superare il levello 9 di questo “gioco” https://www.learnsecurityonline.com/index.php?_o=demo&_m=Challenge e mi sono immerso in stack, heap, buffer, indirizzi di memoria etc… quindi ho deciso di chiarirmi le idee, qualcosa la ricordavo dal corso di Architettura e qualche guida letta in precedenza ma tra il dire e il fare c’è di mezzo…..
Cercando tra gli svariati tutorial di gdb non sò come mi sono imbattuto in questa guida Capire e sfruttare gli stack buffer overflows, è stata molto di aiuto, è riuscita a farmi capire bene come è organizzata la memoria e, con svariati esempi semplici ed intuitivi, di dimostrare come sfruttare le vurnelabilità di overflow nello stack.
A dire il vero il livello 9 consisteva nello spulciare all’interno di un core dump, quindi diciamo che quella guida non è la risposta per superare quel livello ma ti chiarisce molto le idee sulla memoria e ti fà divertire nel vedere come exploitare un programma :-)
Ringrazio vivamente Giovanni Laieta per aver scritto quella guida e ricosivamente anche i sui ringraziamenti.
Inserisco di seguito l’introduzione….

Scopo di questo articolo è spiegare cos’è un buffer overflow e come possa essere sfruttato da un possibile attacker per eseguire codice arbitrario.
Molti concetti assembly sono stati semplificati per permettere anche a lettori non esperti la comprensione dell’articolo. Nonostante ciò si consiglia di avere delle basi di programmazione in linguaggio C e di avere una minima conoscenza dell’architettura di un calcolatore.
Spesso durante la trattazione dell’articolo sarà usato il debugger gdb quindi è consigliabile avere esperienza nel suo utilizzo.

Gli esempi riportati in questo articolo sono stati pensati per architetture x86 con sistema operativo GNU/Linux, tuttavia le tecniche illustrate possono essere adattate anche ad altre architetture e differenti sistemi operativi.
I programmi di esempio riportati all’interno di questo documento sono stati testati con il compilatore gcc versione 2.95, altre versioni di tale compilatore traducono lo stesso sorgente C in differenti istruzioni assembly: i programmi di esempio che interagiscono direttamente con il codice macchina potrebbero non avere lo stesso risultato se compilati con altre versioni di gcc.

Tags:

Leave a Reply

Il contenuto di questo Blog è rilasciato sotto Licenza Creative Commons (Leggi)