FROM ubuntu:24.04 AS builder

RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc \
    libc6-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /build
COPY src/vault.c .

# 不带 canary、不带 PIE、关闭 CET（避免在启用 CET 的部署主机上被硬件
# 影子栈拦下经典 ret2win），保留 NX。这是 Easy 档的有意设计：无需泄露、
# 无需绕过 ASLR，只是干净地覆写保存的返回地址。
RUN gcc -m64 -O0 -fno-stack-protector -no-pie -fcf-protection=none \
    -z noexecstack -z relro -z now \
    -o vault vault.c

FROM ubuntu:24.04

RUN apt-get update && apt-get install -y --no-install-recommends \
    socat \
    util-linux \
    && rm -rf /var/lib/apt/lists/* \
    && useradd -m -s /usr/sbin/nologin pwn

COPY --from=builder /build/vault /home/pwn/vault
COPY config/run-vault.sh /home/pwn/run-vault.sh
COPY config/entrypoint.sh /entrypoint.sh
RUN chmod 555 /home/pwn/vault /home/pwn/run-vault.sh /entrypoint.sh

EXPOSE 9999
ENTRYPOINT ["/entrypoint.sh"]
