Главной задачей было симулировать ситуацию наиболее приближенную к реально возможному сценарию: таким образом программа была скомпилирована со всеми основными флагами безопасности (подробнее про это позже) и запущена в изолированном docker-контейнере, с нулевым числом внешних зависимостей.
Исходный кодпрограммы, которая запущена на удалённом сервереЭксплойтОписание используемых уязвимостей
Для сборки и деплоя используется система сборки PwnableHarness. После установки необходимых зависимостей, можно скомпилировать проект и поднять docker-контейнер с приложением одной командой
pwnmake publishСамо приложение представляет из себя довольно простую консольную утилиту, которая способна выполнять некоторые команды с файловой системой
Команда для компиляции
gcc -m64 -I. -O0 -fPIC -DNDEBUG=1 -MD -MP -MF src/*.c.d -c -o src/*.c.o src/*.c
gcc -m64 -Wl,-z,relro,-z,now -pie -o unhackable_bash src/*.oВ итоге получаем 64-битный ELF для x86 с полным набором ограничений для безопасного исполнения
Результатом выполнения эксплойта является доступ к shell на удалённой машине


