Teraz, gdy omówiliśmy podstawy, jesteś gotowy, aby przyjrzeć się rzeczywistemu przykładowi. W rzeczywistym świecie luki nie zawsze są tak proste, jak przykład meet.c. Proces rozwoju exploita przepełnienia stosu zazwyczaj przebiega według następujących kroków:
- Kontroluj przepływ wykonywania (rejestr EIP) poprzez identyfikację luki, która powoduje przepełnienie adresu powrotnego.
- Określ przesunięcie(a) i ograniczenia (złe znaki przerywające exploit, takie jak znaki nowego wiersza, powrotu karetki i bajty zerowe).
- Określ wektor ataku.
- Debuguj i śledź przepływ programu podczas przepełnienia.
- Zbuduj exploit.
- Przetestuj exploit.
Każda luka będzie miała własne ograniczenia i specjalne sytuacje w zależności od charakteru podatnego programu, flag czasu kompilacji, zachowania i przyczyny głównej podatnej funkcji oraz sposobu, w jaki przekształca ona dane wejściowe powodujące exploit.