Я написал фаззер, чтобы вызвать переполнение буфера в уязвимом C
приложении, создав его подпроцесс.
CASE #2 (Size = 24):
IN: AjsdfFjSueFmVnJiSkOpOjHk
OUT: -11
IN
символизирует значение, переданное scanf
OUT
символизирует возвращаемое значение
уязвимая программа:
#include <stdio.h>
#include <stdlib.h>
#define N 16 /* buffer size */
int main(void) {
char name[N]; /* buffer */
/* prompt user for name */
printf("What's your name? ");
scanf("%s", name);
printf("Hi there, %s!\n", name); /* greet the user */
return EXIT_SUCCESS;
}
запуск этой уязвимой программы вручную с моей выше сгенерированной полезной нагрузкой возвращает:
Segmentation Fault
Теперь, чтобы правильно распечатать ошибку, я хотел бы сопоставить int return value
с перечислением -> вроде Segmentation Fault = -11
Однако, во время моего исследования я не смог найти никакой информации о том, как эти коды ошибок на самом деле отображаются, даже для моего примера -11 = Segmentation fault