Skip to main content

ret2dlresolve: 심볼 해석기를 역이용하는 ROP 트릭

ret2dlresolve동적 링커(ld.so)의 심볼 해석 과정을 악용해, 바이너리에 없는 함수도 ROP로 호출하는 기법입니다. 특히 PLT/GOT가 제한된 CTF 바이너리에서 강력합니다.

핵심 아이디어

  • ROP로 read를 호출해 가짜 Elf64_Rela, Elf64_Sym, 문자열 테이블을 메모리에 심기
  • plt[0](resolver stub)로 점프해 심볼 해석 루틴을 강제로 실행
  • 해석 결과로 원하는 함수(system, execve)가 호출됨

공격 흐름 요약

  • BSS/스택에 페이로드 구조체 구성
  • rdi/rsi/rdx 세팅 → read로 구조체 주입
  • plt[0] + 인덱스 조작으로 resolver 유도

방어 포인트

  • FULL RELRO, PIE, NX는 여전히 유효한 방어층
  • 특히 ASLR + PIE는 공격 난이도를 크게 올림

CTF에서 “PLT에 system이 없다”면 ret2dlresolve를 의심해보세요.