본문으로 건너뛰기

ELF PLT/GOT 하이재킹 핵심 흐름

리버싱이나 CTF에서 GOT overwrite는 아직도 강력한 우회 포인트입니다. 동적 링킹 흐름만 명확히 잡으면, 호출 경로를 깔끔하게 갈아탈 수 있어요.

핵심 개념

  • PLT는 호출 스텁, GOT는 실제 함수 주소 캐시
  • partial RELRO면 GOT 쓰기가 가능할 수 있음
  • 함수 포인터 대신 GOT를 덮는 게 안정적일 때가 많음

실전 체크리스트

  1. readelf -l로 RELRO 확인
  2. objdump -R로 타깃 GOT 엔트리 파악
  3. pwndbg got로 런타임 주소 추적
  4. 덮을 함수는 system, win, 혹은 one-gadget

마지막으로, 최신 바이너리에서는 full RELRO + PIE + CET 조합이 많습니다. 이때는 hook 대상 자체를 바꾸기보다 호출 전 제어 흐름(rop, ret2plt)을 먼저 노리는 게 현실적입니다.