docker (pwnable 문제 다양한 ubuntu버전에서 실행하기)
포너블을 풀 때 매번 libc의 버전이 다르고 내부 동작이 다르면 gdb로 분석할 때 서버 작동과 다르다.
docker를 이용해서 가상 환경을 만들고 포너블 하자. docker는 vmware과는 다르다.
1. 도커를 잘 모른다면 다음 블로그를 읽어보자.
docker의 이해: https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
초보를 위한 도커 안내서 - 도커란 무엇인가?
도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이
subicura.com
2. 도커 설치
https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html
초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기
초보를 위한 도커 안내서 2번째 글입니다. 도커의 기본적인 내용을 이야기 했던 첫번째 글에 이어 실제로 도커를 설치하고 컨테이너를 실행하면서 도커 명령어를 알아봅니다. 도커를 처음 접하
subicura.com
도커 설치는 linux(ubuntu나 centos같은경우)라면 간단하게 명령어를 입력하면 가능하고 macOs 또는 windows의 경우에는 추가로 가상화를 지원하는 docker for mac/windows를 설치하여야 한다.
curl -fsSL https://get.docker.com/ | sudo sh
한줄만 입력하면 설치가 완료된다.
3. 컨테이너 실행
sudo docker run --rm -it ubuntu:16.04 /bin/bash
ubuntu:16.04의 bash 쉘을 실행시키는 명령어이다. --rm는 프로세스가 종료되면 컨테이너가 자동 삭제되는 옵션이다. -it는 키보드 입력을 위해 넣은 옵션이다.
호스트 디렉토리를 도커에서 마운트해서 사용하는 방법
docker run --rm -it -v /home/juho/Unix:/home/Unix ubuntu:18.04 /bin/bash
마운트를 하면 새로 워게임 문제를 다운받을 필요 없이 호스트 파일을 접근 가능하다.
4. 도커 실행 후 파일 설치
기본 도커 이미지를 실행시키면 포너블을 위한 툴들이 깔려있지 않은 상태이므로 여러가지 설치를 진행해야 한다.
cd ~
apt-get update && apt-get install -y netcat
apt update
apt install curl git wget file zsh sudo vim libssl-dev libffi-dev build-essential libssl-dev libc6-i386 libc6-dbg gcc-multilib make gcc gdb -y
apt install python python-pip git curl wget vim zsh gdb python3 python3-pip -y
//patchelf 실행을 위한 설치
cd ~
git clone https://github.com/NixOS/patchelf
cd patchelf
apt-get install autoconf -y
./bootstrap.sh
./configure
make
make check
sudo make install
//pwngdb 설치
sudo apt-get update
sudo apt-get install git gdb gcc-multilib build-essential
git clone https://github.com/longld/peda.git ~/peda
git clone https://github.com/scwuaptx/Pwngdb.git
cp ~/Pwngdb/.gdbinit ~/
참고: https://psj-study.tistory.com/56
[docker] pwnable docker환경 세팅하기
도커환경에서 리눅스 버전 세팅하기 매 번 vm으로 바이너리 받고 환경 세팅해주고, 호환성도 맞지 않아 디버깅도 잘 되지 않아 악순환이 번복되고 있었다. 그래서 해결책으로 vm snapshot까지 살 생
sangjun.xyz