카테고리 없음

취약점 공격 연습용, '허점이 많은 프로그램' 0.1

진모씨 2014. 1. 17. 23:39

아래 프로그램은 허점이 많지만, uaf/fsb/bof 를 공부하시는 분들에게 도움이 될까 해서 올렸어요.

기능은..

malloc -> 숫자를 입력하면 그만큼 힙에 메모리를 할당한다.

free -> 주소를 10진수 또는 16진수(앞에 0x 붙여야함) 의 숫자로 입력하면 그 주소를 free 함수로 메모리 할당 해제시켜준다.

exit -> return해준다.

fsb -> 입력한 문자의 형식 문자대로 printf해주고 한 줄을 띄워준다.

컴파일 옵션은 -fno-stack-protection 이면 될것 같아요.

실행할 때는 환경변수

MALLOC_CHECK_

를 0으로 설정하고 실행하시면 좋아요. :) 해킹 재밌게 하세요.


#include <stdio.h>

#include <memory.h>

#include <stdlib.h>


int main() {

 char buf[256];

 int v;

 while(1) {

  memset(buf, 0, 256);

  printf("command >>");

  gets(buf);

  if(!strcmp(buf, "malloc")) {

   printf("size >>");

   scanf("%d", &v);

   printf("malloc: %p\n", malloc(v));

  }

  if(!strcmp(buf, "free")) {

   memset(buf, 0, 256);

   printf("address >> ");

   gets(buf);

   if(buf[0] == '0' && buf[1] == 'x') {

    sscanf(buf+2, "%x", &v);

   }

   else v = atoi(buf);

   free(v);

   printf("free: %p\n", v);

  }

  if(!strcmp(buf, "exit")) {

   return 0;

  }

  if(!strcmp(buf, "printf")) {

   scanf("%s", buf);

   printf(buf);

   puts(""); // for line-break

  }

 }

 return 0;

}