Dreamhack - Exercise: Docker

·2025년 9월 8일

Dreamhack-Writeups

목록 보기
38/52

Exercise: Docker

문제 링크

https://dreamhack.io/wargame/challenges/876

문제 설명

Docker 실습을 위한 문제입니다. 주어진 Dockerfile을 빌드하여 이미지를 생성하고 컨테이너를 실행하는 문제입니다.

플래그의 형식은 DH{...} 입니다.

풀이과정

  1. 문제에서 제시된 도커 파일을 다운받고, 압축을 풉니다. 이후 터미널에서 Dockerfile이 있는 파일로 이동합니다.
    cd C:\Users\navyu\Downloads\7728c510-c1f0-4806-8eca-776ee59d04a3
  2. Dockerfile 안에 있는 명령들을 해석하여 이미지를 생성하는 명령어를 실행합니다.
    docker build -t myimage .
    • docker build : 가진 Dockerfile을 읽어서 이미지 생성
    • -t myimage : 결과 이미지에 이름을 붙임 (이 명령어에서는 태그를 지정하지 않았기에 myimage:latest 로 자동 지정됩니다)
    • . : Dockerfile이 있는 위치 (현재 디렉토리)
  3. 제대로 이미지가 저장됐는지 도커 엔진 내부에 저장된 이미지 목록을 보기 위해 명령어를 실행합니다.
    docker images
    출력된 도커 이미지 목록을 확인해보면 방금 docker build -t myimage . 명령어를 실행했을때 생긴 이미지가 있음을 확인할 수 있습니다.
  1. 본격적으로 플래그를 찾기 위해 이미지를 실행하고, 그 이미지 기반으로 생성된 컨테이너 안으로 접근해야 합니다.
    docker run -it myimage /bin/bash
    • docer run : 새 컨테이너를 만들고 실행합니다.
    • -i : 표준 입력 유지해 키보드로 입력을 가능하게 합니다.
    • -t: 터미널 화면을 만들어주어 bash가 "터미널"처럼 동작합니다.
    • myimage : 실행할 이미지 이름입니다. (tag인 :lastest는 생략합니다.)
    • /bin/bash : 컨테이너 안에서 첫번째로 실행할 프로그램을 지정해줍니다. /bin/bash는 우리가 흔히 쓰는 셸로, ls,cat 등의 명령이 실행 가능 하기에 대화형으로 컨테이너 안을 돌아다니기 위해 실행합니다.
      명령어를 실행하면 chall@0976e230db0b:~$ 프롬프트가 뜨며, 윈도우가 아닌 격리된 리눅스 컨테이너 안으로 들어온 상태가 됩니다. 이 상태에서 셸 명령어를 사용할 수 있습니다.
  2. 현재 디렉토리의 파일 목록을 확인하기 위해 명령어를 실행해줍니다.
    ls -al
    • ls : 현재 디렉토리의 파일/폴더의 목록을 봅니다.
    • -a : 숨김 파일까지 다 보여줍니다.
    • -l : 자세한 정보를 보여줍니다.
      명령어를 실하니 대놓고 파일 이름이 flag인 파일이 존재함을 확인할 수 있습니다.

  1. flag 파일 내용을 확인하는 명령어를 실행합니다.
    cat flag
    실행하면 최종적으로 플래그를 획득할 수 있습니다.

배운점

  • 도커는 웹보안 실습을 위해 DVAM을 실행할때만 사용해보았는데, 이렇게 터미널을 통해 실습하는 것은 처음이라 흥미롭고 새로웠습니다.
  • 이미지 생성, 컨테이너 실행 등의 개념 또한 이 문제를 통해 처음 접해보게 되었습니다. Dockerfile만 있으면 이미지를 만들고, 그 이미지를 실행하여 컨테이너를 빌드하고, 그 컨테이너 안에서 작업을 할 수 있음을 알게 되었습니다.
  • 리눅스의 기본 명령어를 실습해볼 수 있었습니다.

Summary (English)

  • Learned how to build a Docker image from a provided Dockerfile using docker build -t myimage ..
  • Verified the created image with docker images and confirmed that it was stored locally.
  • Ran a new container interactively using docker run -it myimage /bin/bash to explore inside the container.
  • Practiced using basic Linux commands such as ls -al to list files and cat to read file contents.
  • Discovered the flag file inside the container and retrieved the flag successfully.
  • Understood the workflow: Dockerfile → Image → Container.
  • Gained hands-on experience with Docker concepts (image vs. container) and basic terminal interaction inside containers.
profile
CTF 풀이 및 실습 중심 학습을 기록합니다.

0개의 댓글