ld base와 해당 버전 ld에서의 구조체 오프셋
문제에 libc.so.6 파일은 포함되어 있으나, ld파일은 따로포함되어있지 않았어서 so 파일의 오프셋만 가지고 풀이가 가능한 줄 알고
우분투 18.04 에서 풀이를 진행하다 안되어서 16.04 버전에서 다시 풀이를 진행하였습니다.
사실 포함되어있었다 해도 구조체오프셋만 가져올 수 있고 ld base가 libc 로부터 어디에 잡히는지를 알 수 없기때문에 큰 도움은 되지 않았을것 같긴 합니다.
다른 버전 운영체제에서 문제환경인 16.04 우분투 없이도 ld base를 비롯한정보들을 가져올 수 있는 방법이 있을까요?
#pwnable
작성자 정보
답변
1
HeyOn
강의 수강: 10
주어진 libc 에 맞는 ld 도 같이 링킹 시키면 제대로 실행이 됩니다.
https://github.com/matrix1001/welpwn/tree/master/PwnContext/libs/ld.so
위주소에 누군가 고맙게도 libc md5 hash 에 맞는 ld 파일들을 제공해주고 있습니다.
주어진 libc의 md5= 8c0d248ea33e6ef17b759fa5d81dda9e 이니 github에서
ld-8c0d248ea33e6ef17b759fa5d81dda9e.so.2 를 다운받으시고 로더와 libc를 둘다 링킹시키시면 됩니다.
저같은 경우 patchelf(https://github.com/NixOS/patchelf) 를 이용해서 패치하는데
--set-interpreter 로 다운받은 로더를 지정하고
--replace-needed 로 기존꺼에서 문제에서 주어진 libc로 바꾸면 됩니다.