Я пытаюсь выполнить простое переполнение буфера на 32-битной Fedora, но значение регистра eip не меняется
Мой код C выглядит следующим образом:
#include <string.h>
int main(int argc, char ** argv){
char buffer[8];
strcpy(buffer, argv[1]);
}
У меня естьпопытался выполнить:
echo 0 > /proc/sys/kernel/exec-shield
echo 0 > /proc/sys/kernel/randomize_va_space
, чтобы отключить любую защиту.Также как я скомпилировал это так:
gcc -g -Wall -fno-stack-protector -z execstack -m32 boftest.c -o boftest
Когда я запускаю команду
./boftest AAAABBBBCCCCDDDD
А затем наблюдаю значения регистра с помощью gdb;Я вижу, что:
ebp contains 0x44444444, but
eip contains 0x80483F4
, что означает, что $ eip не был успешно изменен.
Я читал другие вопросы с той же проблемой, но ни одно из решений не помогло мне.Не могли бы вы понять, как это сделать?