OZ1NG의 뽀나블(Pwnable)

[Tips] deb파일로 glibc 다운그레이드 하기 본문

Tips

[Tips] deb파일로 glibc 다운그레이드 하기

OZ1NG 2021. 2. 4. 18:53

glibc deb파일 다운로드 : ubuntu.pkgs.org/18.04/ubuntu-updates-main-amd64/libc6_2.27-3ubuntu1.4_amd64.deb.html

(위의 경로는 glibc 2.27-3ubuntu1.4_amd64.deb파일 받는 경로이다.)

[사진1]

화면을 내려보면 위와같은 Download가 있는데 Binary PackageURL을 주소창에 갖다 붙이면 다운로드가 된다.

 

해당 파일을 리눅스 서버로 옮기고 아래의 방법대로 실행하면 됨.

 

 

deb파일로 설치하는 방법

sudo apt install ./[파일 이름].deb

 

참고 : linuxize.com/post/how-to-install-deb-packages-on-ubuntu/#:~:text=Deb%20is%20the%20installation%20package,apt%20and%20apt%2Dget%20utilities.

 

 

[주의!]

근데 이 방법으로 다운그레이드를 해도 완벽하게 바뀌는건 아니라는 점에 유의하자.

실제로 내가 glibc 2.27-3ubuntu1.4_amd64.deb --> glibc 2.27-3ubuntu1_amd64.deb로 다운그레이드를 실행해봤지만,

재부팅을 하던 뭘하던 ldd --version으로 확인해 봤을때, 

[사진2]

위와 같이 버전표기는 바뀌지 않는다는 것을 알 수 있었다. (하지만 실제로 libc-2.27.so는 다운그레이드가 되었음)

 

[사진3]

그리고 위와 같이 다운그레이드 후 모든 버전이 호환이 되는게 아닌건지 gdb에서 몇몇 심볼들을 읽어오지 못하는

경우가 발생하였다. (읽어오지 못하는건 pwndbg도 마찬가지였다.)
(libc6-dbg와 libc6-dbg:i386을 다운그레이드 한 후에 설치를 하게 되면 libc버전이 다시 최신버전으로 되돌아간다...)

후... 내가 이겼다..

이런 경우 아래의 참고 사이트에서 버전을 확인 한 후 

apt install libc6-dbg:2.27-3ubuntu1 버전으로 설치를 해주면 downgrade 된 상태로 heapinfo등을 사용 할 수 있다!

(참고로 libc6-dbg:i386의 경우에는 참고 사이트에도 나와 있다시피 3ubuntu1 버전은 없다.

따라서 설치를 안해주면 된다.)

참고 : packages.ubuntu.com/bionic/libc6-dbg

 

Ubuntu – Details of package libc6-dbg in bionic

Package: libc6-dbg (2.27-3ubuntu1.2 and others) [security] GNU C Library: detached debugging symbols Other Packages Related to libc6-dbg dep: libc6 (= 2.27-3ubuntu1) [not amd64, i386] GNU C Library: Shared libraries also a virtual package provided by libc6

packages.ubuntu.com

---------------------------추가-----------------------

apt --dry-run install [패키지 이름=버전] 과 같이 --dry-run 옵션을 붙여서 할 수도 있다.

예시 : apt --dry-run install libc6=2.27-3ubuntu1

Comments