반응형

필자는 시험기간인데 시험공부는 하기 싫은 대학생이다.


어김없이 오늘도 시험공부하기 싫어서 CTF하고 있었는데, 설정을 잘못건드렸는지 libc버전이 아래로 내려갔다.


그래서 그런지 apt-get, dpkg 명령같이 최신 버전의 glibc가 필요한 명령어들을 쳐보면 아래와 같은 에러가 발생하게 됐다.


...

 runlevel: /lib/x86_64-linux-gnu/libc.so.6: version `glibc_2.27' not found

...


이때까지는 별생각없이 "아 그냥 껐다 켜볼까?"란 안일한 생각으로 reboot명령을 내리려는데 또 저런 에러가 나서 재부팅이 안되는거다.


그래서 그냥 강제로 conoha의 재부팅기능을 사용했는데, putty로 미리 ssh연결 대기타고 있었지만 접속이 안됐다.


그래서 한번 콘솔을 살펴봤더니, 에라이 시발커널패틱이 "뙇"하고 떠있는게 아닌가


결국 멘탈이 갈려나가면서 삽질해봤는데, 처음엔 grub으로 부팅해서 initramfs로 mount해서 파일만 가져올까란 생각을 했었다.


근데, 또 보니까 네트워크가 안되더라. (이때 개빡쳤다)


대신 번뜩인 방법이 있었는데, 필자는 conoha vps를 이용하고 있었고 추가 디스크를 넣어줄 수 있다는 걸 보게됐다.


그전까지는 돈없는 학생이라 안쓰고 있었던 기능인데, 복구용으로 예전에 백업해둔 서버이미지를 추가 디스크에 넣어주고


grub으로 해당 디스크로 부팅하도록 명령을 내렸다. 그 때 명령은 아래와 같다.


set root=(hd1,gpt2) # ls로 확인해봐야함

linux /boot/vmlinuz-4.15.0-39-generic root=/dev/vdb2 rw net.ifnames=0 biosdevname=0 # /dev/vda2가 기존꺼였고 /dev/vdb2가 추가디스크다.

initrd /boot/initrd.img-4.15.0-39-generic

boot


이렇게 명령을 내리고 부팅시켜버리면, 추가디스크에 올려진 백업 서버가 올라가게 된다.


이제 기존 디스크를 mount시켜서 파일을 오거나 해야하는데, 백업이 귀찮으니 libc만 맞춰주면 될거라는 생각에 아래의 링크로 가서 dpkg파일을 다운받았다.


https://packages.ubuntu.com/bionic/amd64/libc6/download


물론 다운로드 받는 경로는 mount된 경로에서 받아야한다. (다운로드받을 때는 백업 디스크를 사용, 다운로드 경로는 추가(고칠예정)디스크)


다운로드가 되었다면, chroot /[mount된 경로] 를 한 뒤, 아래의 명령을 수행해서 강제로 libc를 설정해주면 된다.


chroot /[mount 경로]

dpkg -i --force-all ~~.deb


이렇게 설치가 완료되면, apt-get update && apt-get install 을 해주고 나머지 libc들을 수정해주면 된다.

'자료' 카테고리의 다른 글

DDos + Syn flooding firewall  (0) 2019.10.03
socat daemonize  (0) 2019.07.22
[Conoha] letsencrypt wildcard 인증서 발급  (0) 2018.12.09
Profile  (0) 2018.10.25
[Pwntools] pyserial uninstall fail시  (0) 2018.07.17
블로그 이미지

KuroNeko_

KuroNeko

,