Я написал программу, которая вызывает setuid(0)
и execve("/bin/bash",NULL,NULL)
.
Тогда я сделал chown root:root a.out && chmod +s a.out
Когда я выполняю, ./a.out
я получаю корневую оболочку. Однако, когда я это делаю, gdb a.out
он запускает процесс как обычный пользователь и запускает пользовательскую оболочку.
Итак ... могу ли я отладить программу root для setuid?
gdbserver
от имени пользователя root и подключаться к нему как обычный пользователь. Из вашего комментария кажется, что вам не удалось сделать это простым способом (запустить gdb от имени root), но я не понимаю, что пошло не так, поэтому я не могу помочь.Вот способ запустить процесс в остановленном состоянии, если хотите. Используйте скрипт bash, выполнив:
Заставьте это бежать в фоновом режиме.
Тогда начни
gdb
и прикрепите к пиду, который был напечатан.Вам нужно будет выполнить
exec
команду с помощьюgdb
, но вы сможете отлаживать с самого начала.источник