libc 라이브러리 파일이 주어졌을 때 glibc 버전 구하기

dandb3·2023년 6월 26일
0

pwnable 팁들

목록 보기
1/5

libc 라이브러리 파일이 존재하는데, glibc 버전을 알고 싶을 때?

아니, 로컬에서는 실행되는 라이브러리가 다른데, 어떻게 알 수 있음?
gdb로 매핑되는 라이브러리를 보고 싶어도 remote라서 못 보잖음.
=> 아래 사이트를 들어가서 확인할 수 있다.

https://libc.blukat.me/?q=write%3A250%2C_exit%3Ae30
위 사이트에 들어가면 입력하는 항목이 여러 개 있는데,

이런 식으로 입력할 수 있다.

  • 각각이 의미하는 뜻은, 어차피 어느 메모리에 매핑되던지 간에 하위 24비트는 동일하기 때문에 실제 runtime에 함수가 매핑되는 하위 24비트의 값을 적기만 하면 사이트가 알아서 해당하는 glibc 버전을 찾아준다.
  • 그런데 결국 libc 파일만 딸랑 주어졌을 경우는 어떻게 함? -> 주어진 libc로 실행하는 법을 내가 모른다..
  • 나름 해결방법을 찾았다.
    1. readelf -h [라이브러리 이름] 을 통해서 start entry를 찾는다.
    2. gdb를 통해서 start entry부터 명령어들을 확인한다.
    3. 확인하다 보면, call 명령어와 함께 함수 이름, 주소가 나오는데 이 값들을 사이트에 집어넣기만 하면 된다.

참고 자료

profile
공부 내용 저장소

0개의 댓글