[시스템 해킹] Stack Buffer Overflow

zzoni·2022년 7월 21일
0

시스템해킹

목록 보기
7/15

Stack Buffer Overflow 는 유명하고 오래된 취약점이다.

💡 Stack Overflow   VS   Stack Buffer Overflow
Stack Overflow : 스택 영역이 너무 많이 확장돼서 발생하는 버그
Stack Buffer Overflow : 스택의 버퍼에 버퍼의 크기보다 많은 데이터가 입력되어 발생하는 버그

◼ Stack Buffer Overflow

- 버퍼란?

데이터가 목적지로 이동되기 전에 보관되는 임시 저장소

수신 측과 송신 측의 갭을 완화하고자..
사이에 버퍼라는 임시저장소를 두고 간접적으로 데이터를 전달한다.
-> 버퍼가 가득 찰 때까지는 유실되는 데이터 없이 통신 가능

스택에 있는 지역 변수는 스택 버퍼, 힙에 할당된 메모리 영역은 힙 버퍼라 불린다.

💡 버퍼링
송신 측의 전송 속도가 느려서 수신 측의 버퍼가 채워질 때까지 대기하는 것


- 버퍼 오버플로우

버퍼가 넘치는 것!

  • 만약 10바이트 크기의 버퍼에 20바이트 크기의 데이터가 들어가려 하면 오버플로우가 발생한다.

  • 일반적으로 버퍼는 메모리 상에 연속해서 할당되어 있으므로, 어떤 버퍼에서 오버플로우가 발생하면, 뒤에 있는 버퍼들의 값이 조작될 위험이 있다.




◼ 중요 데이터 변조

◼ 데이터 유출

C언어에서 정상적인 문자열은 널바이트로 종결되며, 표준 문자열 출력 함수들은 널바이트를 문자열의 끝으로 인식한다.
만약 어떤 버퍼에 오버플로우를 발생시켜서 다른 버퍼와의 사이에 있는 널바이트를 모두 제거하면, 해당 버퍼를 출력시켜서 다른 버퍼의 데이터를 읽을 수 있다.

◼ 실행 흐름 조작

스택 버퍼 오버플로우로 반환 주소(Return Address)를 조작하면?

profile
모든 게시물은 다크모드에서 작성되었습니다!

0개의 댓글