基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)

这种搭建方法需要你先装好docker,关于docker命令的安装这里就不过多介绍了,下面讲的是基于你已经安装好了docker,我们再使用xinetd在CTFd上部署pwn题目。

首先讲一下我自己搭建pwn题的一些经历,我最开始参考的是用socat命令来搭,但是我没有成功,依旧是端口的问题或者是命令执行不成功,停在了那里无法执行,我也试过pwn_deploy_chroot以及相关的,但是也是命令执行卡住了,以及由于我没有注册GitHub账号,导致无法克隆那个工具,于是我最终还是选择用的xinetd来搭建。

第一步,我们先克隆xinetd

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

克隆好之后我们进入该目录,如下图所示 

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第1张图片

 

下面讲的东西请大家务必耐心看完,先不要着急去搭建, 如果只是为了搭建我直接就给你们放几个命令就行了,还是真心希望各位能顺利部署pwn题目。

 这里要先给大家说清楚一个东西,我们搭建的这种CTF靶场一般是在80端口

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第2张图片

而实际上我们的题目部署所在的端口是被映射到了一个80端口(网页服务)

使用 docker ps  命令可以查看开启的容器

如下图,蓝色标注为容器名,红色标注为端口间的映射关系

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第3张图片

关于ctf_xinetd下的目录介绍:

bin目录下面放的是flag和pwn题目程序文件;

默认是helloworld和flag,我们可以将它们替换成我们自己想要的flag和题目程序

(注意在做这些替换之前不要去创容器、拉取镜像这些,什么意思呢,如果你已经创好了这道题的容器,那么它里面放的就是helloworld和默认flag的内容,这时你再去bin目录里作更改是无效的,bin目录里内容虽然改了,但是容器里的东西是没改的,并且,对于容器中来说,helloworld和flag并不在bin目录,而是在 /home/ctf 目录下)

关于更换flag和pwn程序我们有两种方法:

(1)在创建容器之前,替换bin目录下的内容;

直接改flag的内容或者自己拉一个进去,再拉一个题目程序(我这里叫stack)进去,并删掉原来的程序(helloworld),注意,stack需要有可执行权限,我们使用chmod命令加权,一般加到750就够了,加777权限更高但是风险也上去了,这里建议加750就行。

chmod 750 stack

加权之后我们发现程序名变成了绿色,说明该程序已经具有可执行权限

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第4张图片

(2)哪怕我们创建好了题目容器,后面又需要更换flag或者题目程序,我们可以使用docker cp 命令来替换:

docker cp 程序所在位置(如果你是在文件当前路径那就直接用文件名) 容器名:要添加到的位置

比如我们更换flag:

docker cp flag eb5d199dfc0f:/home/ctf #eb5d199dfc0f是你自己这道题的容器名

但是更建议各位创建容器之前就对bin目录里内容进行替换

接下来我们还需要改另外两个文件,如果不改,你只能连接本地,即nc 0.0.0.0 才能访问,而将0.0.0.0替换成你靶场地址时就无法访问。

因为我们下载的这个 ctf_xinetd 它里面默认端口是被映射到了9999,而我们前面说了,我们需要的是80,因此我们要将所有的9999替换成80。

vim ctf.xinetd

将port改为80

(这里顺便把./后面的hellworld改成你放到bin目录下的程序名)

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第5张图片

修改后wq保存退出 

vim Dockerfile

将expose改为80并保存退出

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第6张图片

 

现在我们才开始创建容器:

docker build -t "stack" .

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第7张图片

这个stack是你创建的镜像的名称,应该是可以随便取的,但是我用的是pwn程序名,方便之后的管理和识别。

创建好后,我们启用它:

docker run -d -p "0.0.0.0:8090:80" -h "stack" --name="stack" stack

这里的stack换成你自己的bin目录下的pwn程序名,8090换成你自己希望放的一个未使用的端口。

启用成功后我们便可看到这个容器

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第8张图片

我们直接nc 靶场地址 端口

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第9张图片

 使用exp脚本测试一遍,没有任何问题,可以成功建立连接并获取flag

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第10张图片

至此,我们在终端的部署完成

接下来只需将题目添加到CTFd前端即可

填写好相关的信息,上传题目程序,给出nc的地址和端口

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第11张图片

 最终效果

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第12张图片

至此我们基于xinetd完成了对pwn题目的所有部署 

关于web题目的部署,可以参考我的另一篇博客 http://t.csdn.cn/cywRR

此外,也欢迎各位来我自己搭的靶场玩 ,杂项和密码学那些都比较简单,很容易AK,主要是针对想入门CTF的朋友,特别是杂项的题目,很具有总结性,也都是原创题,算是我自己以前对杂项知识的一个简单总结,Welcome! 靶场地址 MyonCTF

基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)_第13张图片 

 

你可能感兴趣的:(网站搭建,CTF,pwn,docker,容器,运维,pwn靶场部署,xinetd)