Из кода, который вы разместили, похоже, что вы должны записать свой собственный файл sudoers
в любой каталог, к которому у вас есть права на запись, а затем запустить эту программу в этом каталоге, чтобы он прочитал ваш файл.
Итак, просто напишите свой собственный UID в этот поддельный файл sudoers
, а затем укажите параметр команды, например bash
, чтобы получить оболочку.Нет необходимости использовать переполнение буфера.
Предположительно, настоящая эксплуатируемая программа имеет бит suid, установленный в правах доступа к файлу, поэтому она может выполнять вызов setuid(0)
.Я предполагаю, что целью этого упражнения является демонстрация того, как весь ввод необходимо дезинфицировать, когда вы имеете дело с suid-программами, включая такие вещи, как относительные пути (которые фактически принимают текущий рабочий каталог в качестве ввода), как и любой пользовательскийпредоставленные пути и другие входные данные.
Но, поскольку программа имеет только бит setgid (как сказано в комментарии), вам нужно найти что-то, что вы делаете только с идентификатором группы.Это что-то может быть, что запись в файл журнала.Вы можете создать символическую ссылку с именем файла log
, указывающую на любой файл, к которому вы хотите добавить, для которого эта группа имеет права на запись.Кроме того, этот файл должен иметь такой формат, чтобы формат строки журнала не приводил к повреждению файла.Помните, что вы можете помещать символы новой строки и т.д. в аргументы командной строки!