Memory Corruption : Stack Buffer Overflow

곽무경·2022년 6월 30일
0

System Hacking

목록 보기
10/27

버퍼

데이터가 목적지로 이동되기 전에 보관되는 임시 저장소
수신 측과 송신 측 사이에 버퍼 라는 임시 저장소를 두고, 이를 통해 간접적으로 데이터를 전달
버퍼가 가득 찰 때까지는 유실되는 데이터 없이 통신이 가능
현대에는 데이터가 저장될 수 있는 모든 단위를 버퍼라고 부르기도 한다.

버퍼 오버플로우

버퍼가 넘치는 것

스택 버퍼 오버플로우

스택의 버퍼 에서 발생하는 오버플로우
오버플로우가 발생하는 버퍼 뒤에 중요한 데이터가 있다면, 해당 데이터가 변조되어 문제가 발생

C언어에서 정상적인 문자열은 널바이트(\0)로 종결된다.
어떤 버퍼에 오버플로우를 발생시켜서 다른 버퍼와의 사이에 있는 널바이트를 모두 제거하면
해당 버퍼를 출력시켜서 다른 버퍼의 데이터를 읽어올 수 있다.

함수를 호출하면 가장 먼저 반환 주소를 스택에 쌓는다.
스택 오버플로우를 이용해 반환 주소를 조작할 수 있다.

0개의 댓글