보안 공부/[PWNABLE] 2

[PWNABLE] Canary

Canary란 무엇인가?Canary는 BOF를 막기 위한 보호 기법 중에 하나이다. 메모리의 스택에 특정 패턴으로 삽입되는 임의의 값인데, 주로 함수의 리턴 주소와 로컬 변수가 저장된 스택 프레임 사이에 위치한다. BOF가 발생하면 스택에 쓰여진 Canary값을 덮어쓰게 되는데 함수가 종료되기 전에 Canary값이 변하지 않았는지 검사하고 Canary값이 변경되었을 경우에는 프로그램이 변조가 있음을 인식하고 종료한다.Canary 적용 확인Canary가 적용되었는지 알 수 있는 방법은 두 가지가 존재한다. 첫 번째로는 checksec 명령어를 통해 알 수 있다.두 번째로는 gdb를 통해 어셈블리코드로 확인하는 것이다. 123456   0x0000000000001189 :     endbr64   0x000..

[PWNABLE] Stack Buffer Overflow

Buffer Overflow란?BOF(Buffer Overflow)는 버퍼(Buffer)의 용량을 초과하여 인접한 메모리 위치를 침범하는 현상을 말한다. BOF의 종류는 두 가지로 나눌 수 있는데 Stack에서 발생하는 Stack Buffer Overflow, Heap에서 발생하는 Heap Buffer Overflow가 있다. 여기서는 Stack Buffer Overflow만 다룰 것이다. Stack Buffer Overflow란?Stack Buffer OverFlow는 프로그램이 할당된 스택 영역에서 데이터가 할당된 범위를 초과해 저장될 때 발생하는 문제이다. 이로 인해 중요한 데이터나 프로그램의 제어 흐름을 변경하는 등 심각한 보안 문제가 발생할 수 있다. Stack Buffer Overflow 공격..