해커스쿨.Section 6 Section 6 gets() 함수 이해하기 section 5 에서 마지막으로 했던 질의에 대해 좀더 알아보는 과정이다 gets()는 키보드로부터 문자열을 입력 받아 버퍼에 저장하는 함수이다이때 이 함수는 주소를 파라미터로 받아 Call by reference 방식으로 입력을 받는다즉, 엔터를 입력받은 곳까지 시작주소부터 채워나가는 것이다 이는 버퍼오버플로우를 발생시키는 취약점을 발생시키게 한다. 이렇듯 gets()가 프로그램에 큰 취약점을 야기할 수 있기 때문에gcc에서 컴파일시 아래와 같은 경고문이 뜨게된다. Study/system 7년 전
해커스쿨.Section 3 Section 3c언어에서 버퍼 사용하기 우선 버퍼는 컴퓨터의 여러곳에 존재한다이번에는 c언어에서 버퍼를 사용하는 방법에 대해 알아본다 c언어에서는 변수를 이용하여 쉽게 버퍼를 만들어낼 수 있다변수에는 다양한 자료형이 있는데 몇가지만 예를 들어 보면 이런 범위를 가진 변수들이 있다이 범위가 각 자료형이 표현할 수 있는 값의 한계이다. 이 중에 char형을 눈여겨보자char형은 문자를 저장하는 자료형이다 그렇다면 문자열을 저장하고 싶을때는 어떻게 해야할까?여러개의 char형을 개별적으로 만들어주는 방법도 있지만 배열이라는 방법이 가장 편하다 예를 들어 20개의 char형 변수를 만들고 싶다면char[20] 과 같이 표현하여 만들 수 있다 그러나 여기에 20바이트 이상의 값을 입력받는다면 어떻게 될까? 이 .. Study/system 7년 전
해커스쿨.Section 2 Section 2버퍼 오버플로우(Buffer OverFlow)의 뜻이 뭔가요? 우선 버퍼에 대해서 알아야 한다.버퍼란 어떤 데이터가 한 곳에서 다른 곳으로 이동할 때,그 데이터가 일시적으로 보관되는 임시 기억 공간이다. 이번에는 오버플로우에 대해 알아보자OverFlow 말그대로 '과하다'와 '넘치다'가 합쳐져"과해서 넘쳐버리다"라는 뜻이 되어버린다 즉, 버퍼 오버플로우란"사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량에서 넘쳐버렸다"라는 뜻이 된다. 이렇게 제한된 버퍼 영역을 벗어나게 되면 다른 메모리 영역을 침범할 수 있고이는 프로그램에 문제를 일으킬 수 있다 Study/system 7년 전