완료됨
문제 풀이에 대한 질문2(스포 포함)

이전 질문과 이어서 질문드립니다.

이전 질문의 작성했던 페이로드에 더불어서
Heap 할당을 Unsorted Bin에 할당하여
Main Arena를 노출시켜

Libc Base까지 획득하였습니다.

문제는 Libc 버전이 높아서 Hook이 없더군요...

어떻게든 해보려고 구글링을 해보니 보통
이런 상황에서는 printf가 참조하는 strlen의 GOT를 덮던가
ExitHandler를 조작해서 문제를 풀이하는 것으로 보였습니다.

문제는 Exploit 코드들을 보면 다들 Pwntool의 함수로 GOT를 구하는게
아니라 오프셋을 하드코딩해서 풀었던데

GDB로 GOT를 찍어보려구 해도 Libc 대역에서 나오는게 없고
Pwntool로 GOT 뱉게 하면 Keyerror가 나오네요

질문은

  1. 결국 Libc Base, Heap Base를 구한 상황에서 어떻게 Exploit을 해야하는가
  2. GOT들은 어떻게 구하시는가

입니다.

#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1

안녕하세요,

  1. 말씀하셨던 방법과 FSOP라는 기법을 이용해 푸는 방법이 있습니다. 다만 이쪽은 가장 자유도가 적을때 행하는 방법이고, 이 문제에서는 원하는 주소에 원하는 값을 몇번이고 쓸 수 있기 때문에 보다 쉬운 방법을 선택하게 됩니다.
  2. libc 함수의 internal을 빠삭하게 파악하고 있다면 손쉽겠지만.. 일반적으로 libc GOT 영역에 (발생한 취약점을 이용해) 더미 데이터를 넣어서 어떤 함수가 호출되는지 확인하는 방법을 사용합니다.
    1. 다만 이 역시 glibc 2.39 부터는 불가능한 방법인 것으로 알고있습니다.
2025.04.29. 10:54