how to know glibc file version

우리가 흔히들 문제에서 Libc 파일을 받으면, 해당 libc의 원본코드를 보기 위해서는 버전이 뭔지 알아야 한다.

C
root@500a25569bbf:/home/bypass_valid_vtable# ls
bypass_valid_vtable  exploit.py  flag  libc.so.6

근데 가령 다음과 같이 libc.so.6 처럼 버전이 명시 되어 있지 않을 수 도 있다. 이때는

C
root@500a25569bbf:/home/bypass_valid_vtable# strings libc.so.6 | grep -i "gnu"
gnu_dev_major
gnu_dev_minor
gnu_get_libc_version
gnu_dev_makedev
gnu_get_libc_release
/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
GNU C Library (Ubuntu GLIBC 2.27-3ubuntu1) stable release version 2.27.
Compiled by GNU CC version 7.3.0.
/usr/lib/x86_64-linux-gnu/gconv
.note.gnu.build-id
.gnu.hash

다음과 같이 문자열을 보면,

GNU C Library (Ubuntu GLIBC 2.27-3ubuntu1) stable release version 2.27.

버전을 알 수 있다.

그런데 간혹 이런 문자열이 안뜨는 경우도 있다.

그럴때는, objdump → 함수들의 하위 3바이트 → https://libc.rip 으로 버전을 알아내야지 뭐

도구가 있다면, build id로 찾아내도 된다.