Я пытаюсь создать переполнение буфера, используя возврат к libc.
Вот код атакующего: http://codepad.org/TtoLjAHc.Он создает полезную нагрузку и сохраняет ее в файле с именем badfile.
Вот уязвимый код: http://codepad.org/DZ7AQy4D. Он читает из badfile и должен порождать оболочку.и защита стека выключены.
Код злоумышленника работает.Но уязвимый код вызывает ошибку.
Может кто-нибудь объяснить, где я ошибаюсь?
Соответствующие разделы кода эксплуататора:
memset(buffer, "\x90", 52);
memcpy(buffer,"BUF=",4);
memcpy(buffer+36, systemAddr,4);
memcpy(buffer+40,exitAddr,4);
memcpy(buffer+44, shAddr,4);
memcpy(buffer+48, nullPad, 4);
Эта переменная, буфертеперь записывается в файл с именем badfile, который читается уязвимой программой с помощью fread ().Соответствующий раздел уязвимой программы:
char buffer[12];
length = fread (buffer, sizeof (char), 52, badfile);