메모리 주소의 높낮이 기준

agnusdei·2025년 11월 8일

CTF

목록 보기
159/185

🧭 메모리 주소의 높낮이 기준

컴퓨터 메모리에서 "높다" 또는 "낮다"는 주소 값(Address Value)의 크기를 의미합니다.

1. 주소가 높다 (High Address)

  • 의미: 주소 값이 큰 숫자입니다.
    • 예시: 0xFFFFFFF0\text{0xFFFFFFF0} (가장 높은 주소에 가까움)
  • 물리적 비유: 아파트의 고층이나 건물의 옥상과 같습니다.

2. 주소가 낮다 (Low Address)

  • 의미: 주소 값이 작은 숫자입니다.
    • 예시: 0x00000010\text{0x00000010} (가장 낮은 주소에 가까움)
  • 물리적 비유: 아파트의 저층이나 건물의 지하와 같습니다.

📈 스택(Stack)에서의 높낮이와 ESP

스택 메모리는 데이터가 쌓이는 방식 때문에 이 높낮이 개념이 특히 중요합니다.

1. 스택의 시작과 성장 방향

대부분의 x86 아키텍처(OSCP 타겟 환경)에서 스택 메모리는 높은 주소에서 시작하여 데이터를 저장할 때마다 낮은 주소 쪽으로 성장합니다.

위치메모리 주소저장된 데이터 (시간 순)
시작 지점높은 주소오래된 함수 정보 (메인 함수 등)
\downarrow 성장\downarrowEBP, 반환 주소 (EIP), 지역 변수...
현재 최상단낮은 주소가장 최근에 추가된 데이터

2. ESP (스택 포인터)의 역할

ESP (Extended Stack Pointer)는 이 성장하는 스택의 '현재 최상단'을 항상 가리킵니다.

  • 따라서 ESP가 가리키는 주소는 현재 스택에서 가장 낮은 주소 값을 가지며, 이곳이 가장 최근에 사용된 메모리입니다.
  • 우리가 Shellcode와 NOP 슬라이드를 스택에 넣으면, 그것들은 ESP\text{ESP}가 가리키는 가장 낮은 주소 근처에 위치하게 됩니다.

✅ 최종 정리:

  • 가장 낮은 주소 \approx 스택의 현재 입구 \approx ESP가 가리키는 곳 \approx 가장 최근 데이터 위치
  • 버퍼 오버플로우는 낮은 주소 쪽으로 성장하는 스택에서 버퍼가 높은 주소에 있는 EIP를 덮어쓰는 공격입니다.

0개의 댓글