Достигните бесконечного l oop с переполнением буфера - PullRequest
1 голос
/ 19 марта 2020

Я хочу достичь бесконечного l oop с n oop slide.

Я использую 64-разрядную версию MacOS Mojave. Мой C код выглядит как

#include <stdio.h>

int main() {
    char name[100];
    printf("What is your name?\n");
    gets(name);
    printf("I   %s\n", name);
    return 0;
}

Я компилирую его следующим образом:

gcc main.c -O0 -g -Xlinker -allow_stack_execute -fno-stack-protector

Мой вывод GDB при переполнении:

0x7ffeefbffa20: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa28: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa30: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa38: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa40: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa48: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa50: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa58: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa60: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa68: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa70: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa78: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa80: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa88: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa90: 0x90    0x90    0x90    0x90    0x90    0x90    0x90    0x90
0x7ffeefbffa98: 0x28    0xfa    0xbf    0xef    0xfe    0x7f    0x00    0x00
0x7ffeefbffaa0: 0x28    0xfa    0xbf    0xef    0xfe    0x7f    0x00    0x00

Информация о кадре без переполнение:

Stack level 0, frame at 0x7ffeefbffaa0:
rip = 0x100000f44 in main (main.c:15); saved rip = 0x7fff6fcf03d5
source language c.
Arglist at 0x7ffeefbffa90, args: 
Locals at 0x7ffeefbffa90, Previous frame's sp is 0x7ffeefbffaa0
Saved registers:
rbp at 0x7ffeefbffa90, rip at 0x7ffeefbffa98`

Ошибка, которую я получаю

Thread 2 received signal SIGSEGV, Segmentation fault.
0x00007ffeefbffa28 in ?? ()

Я новичок ie в этом. Я думаю, что по логике я все делаю правильно, и я должен получить «бесконечный n oop слайд», но это не работает.

...