2016-05-21 3 views
-2

В настоящее время я изучаю книгу о безопасности (я не публиковал имя книги, потому что я не уверен в правилах сайта, но могу это сделать, если с этим нет никаких проблем), и я наткнулся на образец код, который предназначен для создания корневой оболочки.Root shell spawning

int main(){ 
    char *name[2]; 
    name[0] = "/bin/sh"; 
    name[1] = 0x0; 
    execve(name[0], name, 0x0); 
    exit(0); 
} 

я скомпилировать его с помощью gcc shell.c -o shell, а затем запустить его, но то, что я вернусь является общей оболочкой $ вместо корневой оболочки #. Не могли бы вы рассказать мне, почему?

+0

короткий ответ: вы не просто поднимете свои привилегии, запустив 'sh'. Вы должны сначала запустить его как «root». – vaxquis

ответ

2

Потому что вы забыли прочитать ту часть, где вам нужно сделать исполняемый файл, принадлежащий root и setuid, прежде чем он сделает то, что вы хотите.

+0

Нет, я этого не делал. '[jack @ 0day local] $ gcc shellcode.c -o shellcode' ' [jack @ 0day local] $./shellcode' 'sh-2.05b #'. Точные точные книги. –

+0

Тогда вам нужно найти новую книгу, потому что нет никакого способа получить этот код. –

+0

На самом деле я добавил 'chown root ', 'sudo chmod + s ' после вашего совета, и это сработало. Спасибо! –

Смежные вопросы