Я пытаюсь изучить эксплойт переполнения буфера.Как использовать эксплойт переполнения буфера
у меня есть этот код:
#include <stdio.h>
int read_req(FILE *p) {
char buf[16];
int i;
fgets(buf, 1024, p);
i = atoi(buf);
return i;
}
int main() {
FILE *fp = fopen("/home/assignment/shellcode", "r");
int x = read_req(fp);
printf("x = %d\n", x);
}
Я хочу использовать этот код, используя этот шеллкода:
#include <stdio.h>
void main() {
char *name[2];
name[0] = "/bin/sh";
name[1] = NULL;
/* Launch shell */
execve(name[0],name, NULL);
}
, но я не знаю, как его использовать, и я слышал, что fgets DonT вызывают буфер проблема переполнения .. Я запутался
Подумайте,
Переполнение буфера происходит (обычно), когда вход больше размера буфера, на который он должен войти. У вас все еще может быть переполнение буфера с помощью 'fgets' - обычно рекомендуется использовать' fgets' потому что вы, программист, можете точно определить, насколько велика ваша вкладка. Если вы позволите ему быть больше, чем ваш буфер - congrats, переполнение буфера даже с помощью 'fgets'. Тем не менее ... большинство программистов (по крайней мере, большинство из тех, что я встречал), как правило, недовольны «эксплойтами». Это простой способ войти в легальную серозную зону (если не полная незаконная деятельность). – tonysdg