Dockerfile?
- 실제 익스플로잇이 되는 환경과 똑같은 환경을 제공하기 위해 사용
- Pwnable 문제의 경우 “로되리안”을 최소화하기 위하여 Dockerfile 전달
*로되리안 : 바로 로컬에서 exploit에 성공했는데 remote에서는 실패할때다. 이 상황을 로컬에선 되고 리모트에선 안된다는 의미로 '로되리안' 이라고 한다 (이유는 실제 환경이랑 로컬에서의 메모리 주소 값 등이 다른 경우 발생한다)

Docker Build를 하기 위해서는 Dockerfile이 있는 폴더로 이동하여 빌드를 시작한다.
이후 빌드된 파일은 컨테이너라고 불리운다.
#Docker build
docker build -t myimage:latest .(lastest는 생략 가능 버전정리를 위해 존재)
docker build -t myimage:1.0 ~/project/docker/ (타 폴더에 있을경우)
#Docker Run - base 파일을 기반으로 ctf-real 이라는 컨테이너 실행
sudo docker run -d -p 5006:5006 --name ctf-real ctf-base
이제 실행한 컨테이너에 접근하기 위해서는 우선 컨테이너가 종료되지 않고 작동하고 있어야한다.
만약 접근하기 전에 이미 명령어가 끝나버렸다면 접근이 힘들기 때문에 start 후 바로 후킹하여 접근한다.
#컨테이서 시작 및 삭제 명령어
sudo docker start -ai ctf-real
sudo docker stop ctf-real
sudo docker rm ctf-real
#컨테이너 내 파일 복사
sudo docker cp ctf-real:/home/gshs/chall ./
#실행한 컨테이너 접근
sudo docker exec -it ctf-real
#만약 실행과 동시에 작업이 끝나는 겨우 접근 방법
sudo docker run -it ctf-real sh
만약 docker를 실행할 때 도커안에 주요 프로그램 설치가 필요하다면 Dockerfile을 아래와 같이 수정하여 접근하면 해결이 가능하다.

'Pwnable > Ananlysis' 카테고리의 다른 글
| Hardware 분석 (0) | 2025.11.14 |
|---|---|
| Embedded & IoT device hacking (0) | 2025.11.14 |