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
wyv3rn
무플 방지 위원회장
ld 파일도 함께 바꿔주셔야 합니다 ㅎㅎ