https://dreamhack.io/wargame/challenges/853
문제에서 언급했듯이 주어진 Dockerfile은 빌드하려고하면 플래그가 있는 부분에서 막히게 된다
그래서 대신 사용할 Docker hub에 저장된 dreamhackofficial/blue-whale
레포지토리의 1번 태그 이미지를 받아 들어가본다
docker hub에서 이미지를 다운받기 위해 docker pull [이미지 주소:TAG]
명령 입력
이제 빌드된 이미지 환경에 들어가기 위해 실행을 시킨다
docker images
명령으로 이미지ID를 확인하고
docker run -it [이미지ID] /bin/bash
명령으로 실행 시 bash-shell 열기
정말로 플래그 파일이 없다
그러면 플래그를 어떻게 찾아야 할까?
그 힌트로 어느 깃허브 주소를 제공해줬는데, 이곳에서 docker를 더 잘 활용할 수 있도록 해주는 툴; dive를 설치할 수 있는 사이트이다.
dive를 통해 탐색할 이미지의 레이어를 트리형태로 보여주어 훨씬 자세한 내용을 확인할 수 있게 해준다.
README.md에서 설치방법과 사용커맨드를 알려준다! 이 커맨드를 이용해 문제를 해결해보자
우선 exit
명령으로 현재 들어와있는 빌드된 환경을 빠져나오기
dive [이미지ID]
명령으로 정보를 확인할 이미지를 빌드
이렇게 빌드된 이미지의 레이어가 어떻게 구상되어있는지 확인할 수 있게된다!
좌측 Layers에서 Tab키를 통해 우측 Current Layer Contents로 넘어가 각 파일별로 상세정보를 확인할 수 있다. 여기서 플래그 파일을 찾아보자
레이어를 아래 방향키로 하나씩 진행시켜보면 flag파일이 나타나는 것을 볼 수 있다
레이어를 좀 더 내려보자
! 우리가 찾던 플래그가 생겼다! 선택된 레이어의 명령을 보면 flag의 파일을 읽도록 명령하는 python3 코드를 실행하는 과정이다
그리고 바로 다음에 rm *
명령을 통해 파일을 지워버리게 함으로써 플래그파일이 지워지도록 하여, 실제로 이미지를 실행할 때 플래그가 없어지게 되는 것이었다
이제 저 플래그를 복사하면 되는데 짤려서 나온다..
이때 사용할 수 있는 방법으로
가상머신의 해상도를 확대
커맨드 ^P
를 통해 우측 컨텐츠에서 선택한 항목을 wrap하고, 커맨드 ^B
를 통해 권한 등의 상세정보를 가리거나, 커맨드 ^U
를 통해 선택한 파일의 경로만 보여지게 한 후, 뒷 부분을 다음 줄로 보여지게하여 해결할 수 있다.