Я пытаюсь потренировать переполнение буфера в стеке для разработки эксплойтов Windows.Я использую 64-битную виртуальную машину Windows 7 и отладчик Immunity.В учебниках используется Windows XP, но я использую win 7. Проблема, с которой я сталкиваюсь, заключается в том, что при открытии в отладчике пользовательской программы на C (exe-файл) выполнение приостанавливается на
Один шагсобытие в ntdll.774A01E8 […]
, как показано ниже
Затем, когда я нажимаю F9 , я получаю "INT3 command at kernel32"
и я вижу строку
STATUS_STACK_BUFFER_OVERRUN обнаружен
в регистре ECX, как показано ниже
После нажатия F9 снова, процесс прекращается.Он никогда не выдает ошибку
Нарушение доступа произошло в сообщении [??]
, что является ожидаемым.Ниже приведен исходный код уязвимой C-программы, которую я использую.Строка аргумента, которую я предоставляю, выглядит как 500 A
- 1000 A
.
Как я могу это исправить и успешно получить перезапись EIP?
#include <stdio.h>
#include <string.h>
void func (char *bar){
char buff[12];
strcpy(buff,bar);
}
int main(int argc, char *argv[]){
func(argv[1]);
}