Фаззер Python3 получает код возврата - PullRequest
0 голосов
/ 14 мая 2018

Я написал фаззер, чтобы вызвать переполнение буфера в уязвимом 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

1 Ответ

0 голосов
/ 14 мая 2018

Я нашел решение:

Popen.returncode

Дочерний код возврата, установленный poll () и wait () (и косвенно - connect ()). Значение None указывает, что процесс не прекращено.

Отрицательное значение -N указывает, что дочерний процесс был прерван сигналом N (только для Unix).

-> Сигналы Unix

Надеюсь, это поможет кому-то еще.

...