083 – Introduzione ai Buffer Overflows (ft. "Smashing The Stack For Fun And Profit") (ITA)

Descrizione

In questo video introduco la prima tematica di binary exploitation affrontata sul canale.

In particolare mostro i buffer overflow sulle architetture intel x86 a 32 bit andando a leggere l’articolo storico “smashing the stack for fun and profit”, scritto da Aleph One.


Timestamps

00:00:00 introduzione alla binary exploitation
00:03:10 phrack magazine vol. 49
00:05:50 introduzione all’articolo “smashing the stack for fun and profit”
00:15:10 definizioni iniziali: buffer, variabili dinamiche e overflow
00:21:45 come è organizzata la memoria dei processi
00:24:12 esempio #1: perché ci sono i segmentation fault?
00:28:46 introduzione alla stack (pila) e proprietà LIFO
00:32:10 perché utilizziamo la stack?
00:39:20 esempio #2: come si implementa la chiamata a funzione?
00:43:00 linguaggio assembly
00:48:35 registri della CPU e il trade-off fondamentale della memoria
00:51:00 struttura della stack, stack pointer (SP) e istruzioni push/pop
00:57:00 instruction pointer (IP)
01:05:30 base pointer (BP)
01:14:15 function prolog e call
01:23:00 esempio #3: esecuzione con debugger gdb
01:37:00 function epilogue: ret e leave
01:45:05 buffer overflow #1: segmentation fault
01:50:30 buffer overflow #2: cambiare flusso di esecuzione sovrascrivendo indirizzo sullo stack
02:07:30 introduzione allo shellcode
02:14:50 esempio #3: shellcode in C
02:21:50 rimuovere i bytes nulli (\x00) dallo shellcode
02:24:12 come scrivere un exploit completo
02:28:10 ASLR e la randomizzazione della memoria
02:32:38 esempio #4: scrittura programma vulnerabile
02:35:30 exploit #1: NOP sled + shellcode + RET addr
02:52:08 gestire il caso di buffer piccoli tramite le variabili di ambiente
02:56:18 exploit #2: env variable + NOP sled + shellcode
03:06:30 come trovare i buffer overflows


Riferimenti / Materiale