Переполнение стека с отличиями
Этот уровень довольно прямолинейный. Просто сядьте и разберитесь что делает код ниже. Ваш шелл-код потребует setuid(LEVEL4_UID) (установку ID пользователя во время выполнения) поскольку bash сбрасывает необходимые привелегии. Либо вы можете написать setuid(geteuid()) обёртку вокруг bash скрипта.
Примечение: конструктор/деструктор может быть недоступен для записи, несмотря на то что этот уровень скомпилирован с ключом -Wl,-z,norelro. Поищите информацию на эту тему, например здесь
Полезные материалы для чтения
Included file: vortex3.c