Najpierw przeanalizujmy podatny program, którego będziemy używać w tym rozdziale. Program vuln.c jest dostarczany w folderze ~/GHHv6/ch11, a w każdym laboratorium będziemy go kompilować ponownie, umożliwiając różne techniki łagodzenia zagrożeń. Podatny program to prosty wielowątkowy serwer TCP, który żąda od użytkownika podania hasła z prostą podatnością na przepełnienie stosu w funkcji auth. Zacznijmy od skompilowania programu vuln.c tylko z ochroną przed niewykonywalnym stosem (NX):
Aby sprawdzić, czy usługa działa, uruchommy ją w tle i użyjmy netcata, aby się z nią połączyć:
Wyłączymy losową modulację układu przestrzeni adresowej (ASLR), aby skupić się na pominięciu NX, a następnie włączymy ją ponownie