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를 의심해보세요.