У меня есть такой код, как типичное переполнение буфера, но он не обсуждает 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);
}
Да, это работает
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()
, я не могу ввести, программа снова запрашивает ввод:
Есть ли решение для b.c
файлов?