CTFd03 - 只需nc的題目架設

Zerocatw

前言

這篇為記錄怎麼架nc的題目

nc題目架設

當題目只需要nc功能時使用
此用python示範
先在虛擬機創一個資料夾,並把題目檔案放進去
cd進資料夾

  1. 先撰寫Dockerfile,可以vim Dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    FROM python:3.9

    COPY 你的server名稱.py .
    COPY 你放flag的檔案名稱.py .

    RUN apt-get update && apt-get install -y socat

    RUN chmod +x 你的server名稱.py
    RUN chmod +x 你放flag的檔案名稱.py

    EXPOSE 你要開放的端口

    CMD ["socat", "TCP4-LISTEN:你要開放的端口,fork", "EXEC:\"python -u 你的server名稱.py\""]

e.g.

1
2
3
4
5
6
7
8
9
10
11
12
13
FROM python:3.9

COPY guess_server.py .
COPY secret.py .

RUN apt-get update && apt-get install -y socat

RUN chmod +x guess_server.py
RUN chmod +x secret.py

EXPOSE 20001

CMD ["socat", "TCP4-LISTEN:20001,fork", "EXEC:\"python -u guess_server.py\""]
  1. build
1
docker build -t "鏡像名稱" 路徑

e.g.

1
docker build -t "guess" .

最後看到Successfully就代表成功惹
image

  1. run
1
docker run -d -p "0.0.0.0:想要開放的端口:想要開放的端口" -h "鏡像名稱" --name="鏡像名稱" 鏡像名稱

ps. 鏡像名稱就是剛剛build的名稱,
前兩個可以自訂,但最後一個需要跟剛剛build的一樣,
不過建議就都一樣啦,比較好辨認
e.g.

1
docker run -d -p "0.0.0.0:20001:20001" -h "guess" --name="guess" guess

接下來記得去防火牆設定那邊設定規則,比如我這個就是要設定TCP 20001port通過
用GCP的話可參考這篇GCP04-建立防火牆規則
最後測試 nc成功連上
image

後記

CTFd架設系列應該就到這篇,其實pwn跟nc類型的題目架設都差不多,只差一個是網路上抓一個是自己寫dockerfile。
而web類型的題目我還沒出過,就不寫了,但網路上其實有很多別人的docker題目檔,都可以直接抓取下來run或是compose up起來,就直接是題目了

  • Title: CTFd03 - 只需nc的題目架設
  • Author: Zerocatw
  • Created at : 2024-07-22 22:10:10
  • Link: https://zerocatw.github.io/2024/07/22/CTFd03 - 只需nc的題目架設/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
CTFd03 - 只需nc的題目架設