Если я правильно понял, код, который вы выполняете (setuid (0)), является системным вызовом, который изменяет текущего пользователя на root . Подвох в том, что он изменяет текущий идентификатор пользователя над этим процессом, давая этому корневому пользователю права доступа. Если он работает, вы можете запустить что-нибудь с правами root.
Чтобы проверить это, создайте файл или каталог с корнем, убедитесь, что вы не можете удалить его как простой пользователь, а затем попробуйте добавить код в свой исполняемый файл, который удаляет файл. Если код работает, файл должен быть удален.
Затем, чтобы получить полномочия root, попробуйте подключиться к новой оболочке из вашей программы. Хотя я не уверен, возможно ли это.
... однако , это старый эксплойт. Старые ядра могут быть открыты для этого, но использование любого последнего выпуска ничего не даст.
ОБНОВЛЕНИЕ: Я только что перечитал код и понял, что вызов оболочки существует (/ bin / sh), так что вы уже переходите на предполагаемую оболочку суперпользователя. Чтобы проверить, работает ли он на самом деле, посмотрите PID вашей оболочки до и после вызова. Если он изменился, выйдите из оболочки, вам следует вернуться к предыдущему PID. Это означает, что (1) это сработало, вы манипулировали стеком и выполняли этот код там, и (2) эксплойт исправлен, и Ядро мешает вам получить доступ.