HENUCTF

记一次用GZCTF和ctf-docker-template部署pwn作为实验室招新赛的过程

笔者用的是Ubuntu 22.04其他的如Kali区别不大

前置

PostgreSQL

GZCTF默认用的数据库是PostgreSQL,首先先安装这个数据库,要不然会出错,而且要在配置GZCTF之前安装,如果之后安装也会出错。

1
2
sudo apt-get update
sudo apt-get install postgresql postgresql-client

docker & docker-compose

docker

卸载老版本docker

1
sudo apt-get remove docker docker-engine docker.io containerd runc

更新二连

1
2
sudo apt update
sudo apt upgrade

安装一些依赖

1
apt-get install ca-certificates curl gnupg lsb-release

添加docker官方GPG密钥

1
2
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

添加Docker软件源

1
2
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

安装

1
apt-get install docker-ce docker-ce-cli containerd.io

配置用户组(可选:在普通用户下可以直接执行docker命令,推荐)

1
sudo usermod -aG docker $USER

注:重新登录才能使更改生效。

我们可以通过启动docker来验证我们是否成功安装。命令如下:

1
2
3
sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker

安装工具

1
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

重启docker

1
sudo systemctl restart docker

验证是否成功

1
sudo docker run hello-world

docker-compose

两种方法:

  1. 使用二进制文件安装docker-compose

    1
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    注:如果要安装其他版本替换命令中的数字即可。

    1
    sudo chmod +x /usr/local/bin/docker-compose

    查看版本验证安装是否成功

    1
    docker-compose version
  2. pip安装docker-compose

    1
    pip install docker-compose

    检查版本同上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#gcc 未编译文件名 -o 编译完成后文件名
#默认保护全开
gcc csu.c -o csu
#部分开启got表,关闭stack保护,关闭pie,-o 编译完成文件名,未编译文件名
gcc -z lazy -fno-stack-protector -no-pie -o csu csu.c
#gcc编译中的集中保护打开和关闭

# 关闭NX / 开启NX
-z execstack / -z noexecstack

# 关闭canary / 开启canary
-fno-stack-protector / -fstack-protector-all

# 关闭pie / 开启pie
-no-pie / -pie

# 关闭relro / 部分开启relro / 完全开启relro
-z norelro / -z lazy / -z now