Как передать вход в get () используя C? - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть такой код, как типичное переполнение буфера, но он не обсуждает topi c переполнения буфера.

test. c

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
   char buff[20];

   strcpy(buff, argv[1]);
}

Я попытался ввести код, подобный следующему:

a. c

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
   char buff[250];

   memset(buff, 0x41, 100);

   execl("./test", "test", buff, NULL);
}

Да, это работает

strcpy

b. c

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
   char buff[250];

   memset(buff, 0x41, 100);

   execl("./test", "test", buff, NULL);
}

Моя проблема заключается в том, что когда strcpy() in test.c код заменяется с gets(), я не могу ввести, программа снова запрашивает ввод:

gets

Есть ли решение для b.c файлов?

...