上次出题还是上次,好多指令已经记不清了.
暂时写在这里,给自己也给以后的你们查阅.

有用的工具

如果你去喜欢的浏览器搜索,不难发现xinetd确实很实用.(笑)

1
git clone https://github.com/Eadom/ctf_xinetd.git

安装之后发现长这样

手搓docker-compose.yml(不会也可以找人机hh).

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'

services:
pwn:
build: ./
image: pwn #这里的image写自己创建的镜像名
ports:
- "60001:9999"
pids_limit: 1024
# cpus: 0.5
restart: unless-stopped
# privileged: true

ctf.xinetd文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
service ctf
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
type = UNLISTED
port = 9999
bind = 0.0.0.0
server = /usr/sbin/chroot
# replace helloworld to your program
server_args = --userspec=1000:1000 /home/ctf ./oneChance
banner_fail = /etc/banner_fail
# safety options
per_source = 10 # the maximum instances of this service per source IP address
rlimit_cpu = 20 # the maximum number of CPU seconds that the service may use
#rlimit_as = 1024M # the Address Space resource limit for the service
#access_times = 2:00-9:00 12:00-24:00
}

./+自己编译好的ELF文件
如果涉及到堆的题目 修改Dockerfile至与红框内容一致.(18.04以上的都和这个保持一致)

image-20241107234628376

start.sh文件

1
2
3
4
5
6
7
8
#!/bin/sh
# Add your startup script
#!/bin/sh
sed -i "s/cdusec{pwntestflag}/$FLAG/" /home/ctf/flag
export FLAG=""
# DO NOT DELETE
/etc/init.d/xinetd start;
sleep infinity;

本地测试

1
docker run -d -p "127.0.0.1:8888:9999" -h "pwn" --name="pwn" pwn

-p后面的内容就是把9999端口映射到8888端口(可改)
–name后面的内容是指定容器的名称,而-h是指定容器的hostname,而最后的是image的名字,要根据建的镜像名进行修改.

部署参考文章web和pwn题的简单动态flag实现_gzctf-CSDN博客

实用的命令

You’re master!

安装环境
1
2
3
4
5
6
7
8
9
10
#我的系统环境:Ubuntu 22.04

# 更新软件包
sudo apt-get update

# 安装docker
sudo apt-get install docker.io

# 检查docker是否安装成功
docker version
制作镜像并上传
1
docker build -t "pwn" .

注意后面的 .

查看本机所有镜像
1
docker images
运行容器
1
docker run
停止容器
1
docker stop
强制停止容器
1
docker kill 
删除容器
1
docker rm
强制删除镜像
1
docker rmi -f <IMAGE_ID>
删除所有未被使用的镜像
1
docker image prune -a
删除所有镜像
1
docker rmi -f $(docker images -q)

这个命令会删除包括 <none> 标签在内的所有镜像.
其中两个具体什么意思其实也可以猜出来,搞不赢也可以去STFW.

进入 Docker 容器以查看其中的内容
1
docker exec -it <CONTAINER_ID> /bin/bash

Tips

操作中特别注意权限问题(提权和可777),以及预留够足够的空间.
上传到平台一定要进行好测试.