libc linking 관련

pwnable one_shot 문제를 풀다보면 libc.so.6 파일을 같이 제공해줍니다.
Exploit 코드를 로컬에서하면 libc_base 주소가 제대로 나오질 않고, 실패합니다. 하지만 그대로 서버에 적용하면 Exploit 성공합니다.

로컬에서도 적용하기 위해서 p = process('file', env = {'LD_PRELOAD' : '제공 libc'})를 하면 바로 EOFError로 끝나버립니다.

그래서 찾아본 것이 patchelf 를 봤는데 사용해봤습니다

❯ ldd oneshot
        linux-vdso.so.1 (0x00007ffc38c2e000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe4679c5000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe467fb8000)

/home/peoplstar/dreamhack/one_shot                                                                                             root@DESKTOP-7L9VV1C
❯ patchelf --replace-needed libc.so.6 ./libc.so.6 ./oneshot

이렇게 패치를 ./file 했을 때 바로 segmentation fault로 실행조차 안됩니다.

pwnable에서 libc를 제공하면 어떻게 패치하고, 어떻게 로컬에서도 적용하는지 궁금합니다.

#pwnable #one-gadget
작성자 정보
답변 1
avatar
wyv3rn
무플 방지 위원회장

ld 파일도 함께 바꿔주셔야 합니다 ㅎㅎ

2022.11.10. 05:53
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기