CTF/CTF_Configuration

CTF-pwnable용 Docker 설치 및 사용법

JUNFUTURE 2022. 2. 16. 19:07

https://spark.kro.kr/110

 

[Docker] CTF-Pwnable 환경 구축하기

Pwnable 환경 구축하기 macOS를 사용하고 있어서 Pwnable을 할때 VMware에 Ubuntu를 설치해서 사용해왔습니다. 하지만, 저는 128GB를 사용하고 있어서 용량이 늘 부족합니다. 그래서 생각한 것이 docker를 이

spark.kro.kr

이 자료를 참고하였다!!

CTF 도커 설치하는법

요 링크에서 Dockerfile을 다운받은 뒤에, 이걸로 도커 컨테이너 컴파일을 진행하면된다.

Dockerfile안에 컨테이너 안에 설치할 pwnable 관련 여러 도구들을 자동으로 설치해주는 내용이 다들어가 있어서 설치가 매우 간편하다.

https://gist.github.com/LiveOverflow/b4502c5358a838d7ca9d92e8a2e8b5a0

 

ubuntu:18.04 CTF Docker

ubuntu:18.04 CTF Docker. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

FROM ubuntu:18.04
ENV LC_CTYPE C.UTF-8
RUN dpkg --add-architecture i386 && \
apt-get update && \
apt-get install -y strace ltrace curl wget gcc net-tools vim gdb python python3 python3-pip wget git make procps libpcre3-dev libdb-dev libxt-dev libxaw7-dev python-pip libc6:i386 libncurses5:i386 libstdc++6:i386 && \
(wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh | sh) && \
pip install capstone requests pwn r2pipe  && \
pip3 install unicorn capstone ropper keystone-engine && \
mkdir tools && cd tools && \
git clone https://github.com/JonathanSalwan/ROPgadget && \
git clone https://github.com/radare/radare2 && \
cd radare2 && sys/install.sh && \
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2?revision=bc2c96c0-14b5-4bb4-9f18-bceb4050fee7?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,7-2018-q2-update

 

CTF 도커 사용법

  • 도커 컨테이너 빌드 ⇒ 컨테이너 run ⇒ 사용

도커 컨테이너 빌드

$ docker build -t ubuntu18:ctf - < Dockerfile
  • 빌드완료된 컨테이너 확인
$ docker images

컨테이너 run (Docker Run)

Build한 Image를 통해서 컨테이너를 실행할 수 있습니다.

(d옵션 주고 rm 빼고써야 담에 또 쓸 수 있음)

$ docker run -d --name=junctf18 -v $PWD:/pwd --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 5555:5555 -i ubuntu18:ctf

 

실행

  • 실행중인 컨테이너 확인 (실행중인 컨테이너여야 실행할 수 있음)
sudo docker ps
  • 실행중인 컨테이너 실행
$ docker exec -it [컨테이너이름] /bin/bash

Host to docker 파일복사

  • Host 파일을 통째로 docker 컨테이너 안으로 복사해준다. 매우 좋은 기능
sudo docker cp [Host파일] [컨테이너 이름]:[컨테이너 안 복사할 경로]

ex) docker ps로 실행중인 컨테이너와 컨테이너 이름 확인 후 사용

sudo docker cp ../20220216 junctf:home/test