# LD ?
파일마다 libc 를 로드하는데 있어서 버전마다 이름이 다르면 호환성이 떨어진다
그래서 모든 파일은 libc.so.6 과 ld-linux-x86-64.so.2 라는 이름의 libc파일과 ld 링커를 로드한다
이 때 libc.so.6 과 ld-linux-x86-64.so.2 는 심볼릭 링크가 걸려있어서
상황에 따라 다른 libc를 참조할 수 있다
여기서 ld 는 libc.so.6 의 함수(라이브러리)들을 가져오는 역할을 하는데
init 함수에서 libc 로드하는 과정에 stack으로 push 되는 루틴이 있다
그래서 가끔 stack에 ld 주솟값이 남아 있는 경우가 보인다
# 어떻게 적용할까?
포너블 문제를 풀 때 종종 binary 뿐만 아니라 libc 파일도 주어지는 경우가 있다
이 경우에 libc 파일을 어떻게 적용해야 할까?
위와 같이 적용하면 기본적으로 설정되어있는 libc파일을 참조하지 않고
env 로 설정되어있는 libc를 로드하여 문제에 주어진 라이브러리의 함수들을 이용할 수 있다
'System Hacking > Study Notes' 카테고리의 다른 글
Shellcode (0) | 2020.01.07 |
---|---|
pwntool 함수 (0) | 2020.01.07 |
Address SANitizer 미완 (0) | 2019.11.04 |
Tcache_Duplicate (0) | 2019.10.08 |
잡기술 (0) | 2019.09.11 |