아직은 잠이 안와
Published 2025. 2. 13. 15:37
Pwn용 ubuntu 18.04 Dockerfile DreamHack/PWN

one_gadget을 설치할 때 항상 이런 이슈가 생긴다.

ERROR:  Error installing one_gadget:
        The last version of elftools (< 1.4.0, >= 1.0.2) to support your Ruby & RubyGems was 1.1.3. Try installing it with gem install elftools -v 1.1.3 and then running the current command again
        elftools requires Ruby version >= 3.1. The current ruby version is 2.5.0.
Successfully installed bindata-2.5.0
The command '/bin/sh -c gem install one_gadget' returned a non-zero code: 1
ERROR: Service 'pwn-env' failed to build : Build failed

위 문제는 Ubuntu 18.04 기본 저장소에 설치되는 ruby가 2.5이고, 최신 one_gadget은 3.1 이상을요구한다.

따라서 Ruby를 2.7로 업그레이드하고, one_gadget또한 다운그레이드 해서 설치해줘야한다.

 

Dockerfile

FROM ubuntu:18.04

# 환경 변수 설정
ENV PATH="${PATH}:/usr/local/lib/python3.6/dist-packages/bin"
ENV LC_CTYPE=C.UTF-8

# 필수 패키지 설치
RUN dpkg --add-architecture i386
RUN apt update && apt install -y \
    gcc \
    g++ \
    g++-multilib \
    git \
    python3 \
    python3-pip \
    sudo \
    tmux \
    vim \
    wget \
    net-tools \
    iputils-ping \
    libffi-dev \
    libssl-dev \
    python3-dev \
    build-essential \
    strace \
    ltrace \
    nasm \
    gdb \
    gdb-multiarch \
    netcat \
    socat \
    patchelf \
    file \
    python3-distutils \
    bison \
    rpm2cpio \
    cpio \
    zstd \
    zsh \
    curl \
    lib32stdc++6 \
    libc6:i386 \
    libc6-dbg:i386 \
    software-properties-common \
    qemu-user-static

# 18.04에서 one_Gadget을 사용하기 위해 ruby를 설치하기 위해선 Brightbox PPA 추가 후 Ruby 2.7 버전을 설치해야 한다.
# Ruby가 18.04 기본 패키지에선 3.1을 지원하지 않음 ㅠㅠ 
RUN apt-add-repository -y ppa:brightbox/ruby-ng && apt update
RUN apt install -y ruby2.7 ruby2.7-dev

# 기본 Ruby를 2.7로 설정
RUN update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby2.7 100

# install pwndbg
WORKDIR /root
RUN git clone https://github.com/pwndbg/pwndbg
WORKDIR /root/pwndbg
RUN git checkout 2023.03.19
RUN ./setup.sh

# install pwntools
RUN pip3 install --upgrade pip
RUN pip3 install pwntools ropgadget python3-capstone seccomp-tools z3-solver

# RubyGems를 Ruby 2.7과 호환되는 마지막 버전(3.3.26)으로 업데이트
RUN gem install rubygems-update -v 3.3.26 && update_rubygems

# one_gadget 1.9.0 설치 (Ruby 2.7과 호환되는 마지막 버전)
RUN gem install one_gadget -v 1.9.0

WORKDIR /root

 

 

docker-compose.yml

version: '3'
services:
  pwn-env:
    build:
      context: .
      dockerfile: Dockerfile
    working_dir: /root
    container_name: pwn-probs
    privileged: true
    volumes:
      - ./:/root
    tty: true

 

 

profile

아직은 잠이 안와

@Dirstibone

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!