ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BOF 막기
    Hack/Pwnable 2015. 2. 23. 13:20
    #include <stdio.h>
    #include <string.h>
     
    int main(int argc, char *argv[])
    {
      char buffer[10];
      if (argc < 2)
      {
        fprintf(stderr, "사용법: %s 문자열\n", argv[0]);
        return 1;
      }
      strcpy(buffer, argv[1]);
      return 0;
    }

    해당 코드는 strcpy함수를 사용하여 buffer overflow가 발생할수있는 코드이다.


    하지만 위와같은코드를 strcpy함수의 SDL버전인 strncpy를 사용하면 bof를 방지할수있다..


    #include <stdio.h>
    #include <string.h>
     
    int main(int argc, char *argv[])
    {
      char buffer[10];
      if (argc < 2)
      {
        fprintf(stderr, "사용법: %s 문자열\n", argv[0]);
        return 1;
      }
      strncpy(buffer, argv[1], sizeof(buffer));
      buffer[sizeof(buffer) - 1] = '\0';  /* 문자열의 끝을 분명히 맺는다 */
      return 0;
    }

    strncpy함수를 사용하면 인자가 하나 더 추가되며, 입력받을크기를 세팅할수있다.


    buffer변수 크기만큼 입력을 받을수있다는소리로, 버퍼 오버플로우를 의도한 나머지의 오버플로우는 모두 막힌다.


    'Hack > Pwnable' 카테고리의 다른 글

    [Pwnable.kr]Echo  (0) 2015.03.24
    [Pwnable.kr]mistake  (0) 2015.03.16
    원격서버에서 로컬로 파일 담아오기  (0) 2015.03.15
    부트킷  (0) 2015.02.25
    Integer Overflow  (1) 2015.01.18

    댓글

Designed by Tistory.