- Статус
- Оффлайн
- Регистрация
- 8 Дек 2018
- Сообщения
- 133
- Реакции
- 63
Пытаюсь выполнить пример из книги (Искусство эксплойта 2 изд.)
Суть в том что у нас есть буфферы из 8 байт buffer_two и buffer_one , и если передать buffer_two более длинную строку то в buffer_one попадет наш злонамеренный код. Я пытаюсь это сделать, программа падает, но buffer_one остается целым. В чем может быть проблема?
Суть в том что у нас есть буфферы из 8 байт buffer_two и buffer_one , и если передать buffer_two более длинную строку то в buffer_one попадет наш злонамеренный код. Я пытаюсь это сделать, программа падает, но buffer_one остается целым. В чем может быть проблема?
C++:
#include <string.h>
int main(int argc, char *argv[])
{
int value = 5;
char buffer_one[8], buffer_two[8];
strcpy(buffer_one, "one"); /* Put "one" into buffer_one. */
strcpy(buffer_two, "two"); /* Put "two" into buffer_two. */
printf("[BEFORE] buffer_two is at %p and contains \'%s\'\n",
buffer_two, buffer_two);
printf("[BEFORE] buffer_one is at %p and contains \'%s\'\n",
buffer_one, buffer_one);
printf("[BEFORE] value is at %p and is %d(0x%08x)\n",
&value, value, value);
printf("\n[STRCPY] copying %d bytes into buffer_two\n\n",
strlen(argv[1]));
strcpy(buffer_two, argv[1]); /* Copy first argument into buffer_two. */
printf("[AFTER] buffer_two is at %p and contains \'%s\'\n",
buffer_two, buffer_two);
printf("[AFTER] buffer_one is at %p and contains \'%s\'\n",
buffer_one, buffer_one);
printf("[AFTER] value is at %p and is %d(0x%08x)\n",
&value, value, value);
return 0;
}