Top

C 배열의 버퍼오버플로우

버퍼오버플로우

#include <stdio.h>

int main() {
  int a1 = 1;
  int a2 = 2;
  int b[4];
  int c1 = 3;
  int c2 = 4;

  printf("a1: %d\n", a1);
  printf("a2: %d\n", a2);
  printf("c1: %d\n", c1);
  printf("c2: %d\n", c2);

  b[4] = 20;

  printf("a1: %d\n", a1);
  printf("a2: %d\n", a2);
  printf("c1: %d\n", c1);
  printf("c2: %d\n", c2);
}

멀웨어 심기

#include <iostream>

using namespace std;

void malware() {
  cout << "malware()" << endl;
}

void function() {
  cout << "function()" << endl;
  unsigned long long a[4];
  a[5] = (unsigned long long)malware;
}

int main() {
  cout << "main() 1" << endl;
  function();
  cout << "main() 2" << endl;
}

실행

main() 1
function1()
function2()
exited, segmentation fault