상세 컨텐츠

본문 제목

CTF Pwnable 문제 Docker 구축

TOOLS/TIPS

by koharin 2021. 9. 12. 10:20

본문

728x90
반응형
Dockerfile challenge docker-compose.xml flag pwn.xinetd start.sh
  • challenge: 문제파일
  • flag: 문제 flag
  • 모두 같은 디렉터리에 위치시킨다.

Dockerfile

FROM ubuntu:16.04
MAINTAINER koharin

RUN apt-get update
RUN apt-get install -y xinetd netcat socat

RUN mkdir /home/pwn
RUN useradd -d /home/pwn pwn -s /bin/bash 
RUN chown -R pwn:pwn /home/pwn/

CMD chown -R root:pwn /home/pwn
RUN chmod 750 /home/pwn 

ADD ./challenge /home/pwn/test
RUN chmod +x /home/pwn/test

ADD ./flag /
RUN chown root:pwn /flag 
RUN chmod 440 /flag 

ADD pwn.xinetd /etc/xinetd/pwn 
ADD ./start.sh /
RUN chmod +x /start.sh

CMD ["/usr/sbin/xinetd","-dontfork"]
  • 사용자 권한 설정 및 파일 권한 설정
  • 필요한 xinetdstart.sh 파일 추가

docker-compose.yml

version: '3'
services:
    challenge:
        build: .
        ports:
            - "20518:8080"
        command:
            - /start.sh
  • ports는 "도커 외부 port:도커 내부 port"로 도커 외부나 내부 포트는 원하는대로 설정한다.

pwn.xinetd

service challenge
{
    disable = no
    socket_type = stream
    protocol = tcp
    wait = no 
    user = pwn 
    server = /home/pwn/test
    type = UNLISTED
    port = 8080
}
  • port는 docker-compose.yml에서 설정한 도커 내부 port와 동일하게 작성한다.
  • user는 Dockerfile에서 생성한 user와 동일하게 작성
  • server는 문제 파일 경로로 설정

start.sh

#!/bin/sh
/etc/init.d/xinetd restart

/bin/bash 
socat TCP-LISTEN:8080,reuseaddr,fork EXEC:'su pwn -c /home/pwn/test'
sleep infinity
  • 문제 접속 시 /home/pwn/ 경로의 test 문제가 바로 실행되도록 하기 위한 파일이다.

docker-compose up -d
  • 모든 문제를 위한 환경 구축 후, 위의 명령어 실행한다.


결과

728x90
반응형

관련글 더보기