22019, 1/1101 회원가입  로그인  
   phillip474
   버퍼오버플로우 도와주세요!!

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=24461 [복사]


#include <stdio.h>
#include <string.h>
  
int main()
{
  char a[20];
  static int b;
  
  
gets(b);
  
  if(a==49)
  {
          printf("O\n");
  }
  else printf("Error!\n");
  return 0;
}

제가 한번 짜본 소스코드인데요,
핸드북을 참고해보면
a라는 변수에 20바이트 이상을 넣으면 오버플로우가 일어난다...라는데
저는 그것보다 더 넣어야하네요.
32바이트였나? 그정도 넣어야 오버플로우됩니다.
왜 이런건가요;

  Hit : 6203     Date : 2012/09/16 06:18



    
aalswn gcc 버젼에따라서 더미가 붙는것도 있고 않붙는것도잇는대

더미가 뭐냐면 변수와변수사이 쓰래기값인대 그냥 우리가 보통 물건사면 물건 다치지말라고 뽁뽁이 껴놓자나요 그런거애여 그래서 그냥 더미도 같이 덮어쓰여주면요

더미값은 GDB 로 보시면되구요
2012/09/16  
ka0r1 gdb -q "프로그램 이름"
(gdb)disas main
2012/09/17  
cd80 gets함수에 int형변수 넣으시면 무조건 세그폴 납니다..
이거 소스가 잘못된거같슴다
2012/09/17