free(): invalid pointer
로컬에서 실행했을 경우 free(): invalid pointer가 발생하면서 안되는데 서버에서는 해당 오류가 나오지 않고 잘 됨을 확인했습니다.
해당 오류는 해제가 불가능한(애초에 메모리가 할당 안된?) 메모리를 해제하려고 할 때 발생함을 확인했습니다.
이말은 애초에 free_hook이 system 주소로 덮어지지 않았다는 뜻이고 free 함수가 그대로 실행 됐다고 보여집니다.
그렇다면 또 libc offset 문제인거 같아보이는데 Exploit Tech: Hook Overwrite 강의 초반에 나오는 ubuntu 18.04 도커 실습 환경에 진행한 것이 문제라고 생각됩니다.
결론은 문제 파일에 주어진 Dockerfile을 통해 구축한 실습 환경과 개인적으로 우분투 버전만 맞춰서 구축한 실습 환경간 차이가 있어 발생한 문제점이라 보면 될까요?
#pwnable
작성자 정보
답변
1
wyv3rn
무플 방지 위원회장
네 그렇습니다.
동일한 우분투 버전이라도 libc버전은 다를 수 있습니다.
이로인해 위 스샷에도 나와있듯 베이스 주소가 제대로 구해지지 않은걸 보실 수 있지요.