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

news2024/10/6 16:22:26

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

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

第一步,我们先克隆xinetd

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

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

 

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

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

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

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

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

关于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

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

(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目录下的程序名)

修改后wq保存退出 

vim Dockerfile

将expose改为80并保存退出

 

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

docker build -t "stack" .

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

创建好后,我们启用它:

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

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

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

我们直接nc 靶场地址 端口

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

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

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

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

 最终效果

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

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

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

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【DC-DC】APS54083 降压恒流驱动器大功率深度调光 舞台 RGB 汽车照明 台灯驱动芯片

产品描述 APS54083 是一款 PWM 工作模式,高效率、外围简单、外置功率 MOS 管,适用于 5-220V 输入高精度降压 LED 恒流驱动芯片。输出最大功率150W最大电流 6A。APS54083 可实现线性调光和 PWM 调光,线性调光脚有效电压范围 0.5-2.5V.PWM 调光频率范围 1…

MySQL第四章、表的增删查改(进阶)

目录 一、数据库约束 1.1约束类型 1.2NULL约束 1.3 UNIQUE:唯一约束 1.4 DEFAULT:默认值约束 1.5 PRIMARY KEY:主键约束 1.6 FOREIGN KEY:外键约束 1.7 CHECK约束(了解) 二、表的设计 2.1 一对一…

轻量级锁实现2——上锁、释放

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:14,13,12,11 文档用途 从底层理解轻量级锁的实现,从保护共享内存的角度理解轻量级锁的使用场景,包括上锁、等待、释放&…

SpringCloud(二)Eureka简介与依赖导入

一、Eureka Eureka能够自动注册并发现微服务,然后对服务的状态、信息进行集中管理,这样当我们需要获取其他服务的信息时,我们只需要向Eureka进行查询就可以了。 像这样的话,服务之间的强关联性就会被进一步削弱。 二、服务注册与…

图像处理之梯度及边缘检测算子

文章目录 一、sobel 算子二、Scharr算子三、Roberts算子四、拉普拉斯算子 梯度是一个量变化的速度,在数学中通常使用求导、求偏导获取梯度或者某一方向上的梯度。 在数字图像中梯度可以看为像素值分别在x,y方向上的变化速度,因为数字图像的离散型&#x…

vue3 如何将页面生成 pdf 导出

原文链接:vue3 如何将页面生成 pdf 导出 前言 最近工作中有需要将一些前端页面(如报表页面等)导出为pdf的需求,博主采用的是html2Canvas jspdf。 步骤 1.引入两个依赖 npm i html2canvas npm i jspdf点击 jsPDF GitHub、jsPDF 文档 查看关于jsPDF更多…

连续两个季度利润暴跌95%以上,三星回不去了

这两年,小编本人电脑的 CPU、显卡等核心硬件毫无升级欲望不愿折腾。 反倒是内存条、固态硬盘容量不知不觉翻了好几倍! 老实说,对大多数像咱这样的普通用户来说,CPU、显卡从两三年前的主流型号升级到现在的主流型号; 价格明显上涨…

求助:交流耦合放大电路(HPF)的阻抗匹配问题

1、同向的交流耦合放大电路 电路如下图所示,信号源是一个上升时间1ns,下降时间15ns的脉冲信号,经过传输线的时延为5ns,然后通过放大器的同向交流耦合放大,这里我们可以明确的直到,下图中的R25就是端接电阻…

JavaWeb——基于Spring Boot的图书数字化管理系统的设计与实现

课程设计总结 1 概述 1.1 项目开发背景 随着信息技术的快速发展,数字化管理已经成为各行各业提高效率和管理水平的重要手段。在图书管理领域,数字化管理系统可以有效地提高管理效率,提供更好的用户体验。本项目旨在开发一个基于Spring…

静态反射C++枚举名字的超简方案——C++闲得慌系列之(一)

C 有枚举,编译后其值就被转成整数了,有时程序会有输出枚举名字的需求,朴素的做法就是手工一个个写字符串(名字),并实现匹配,比如: enum class Shape {rectangle, circular}; std::s…

再获信通院认可!华住&持安零信任项目获评零信任最佳方案奖!

2023年7月12日,在中国通信标准化协会算网融合产业及标准推进委员会(CCSA TC621)在京组织召开“2023算网融合产业发展峰会-零信任产业发展论坛”上,“2022零信任优秀案例”成果正式发布。 持安科技与华住集团共同完成的 “华住集团…

【SpringBoot】| Spring Boot 常见的底层注解剖析

目录 一:Spring Boot 常见的底层注解 1. 容器功能 1.1 组件添加 方法一:使用Configuration注解Bean注解 方法二:使用Configuration注解Import注解 方法三:使用Configuration注解Conditional注解 1.2 原生xml配置文件引入…

ITDR何以成为IAM的最佳搭档?

摘 要 ❖随着零信任方案的逐渐落地,身份成为企业的新边界。同时,身份基础设施成为了攻击焦点。 ❖最近的身份攻击变得更加巧妙和复杂,甚至可以绕过MFA。 ❖当前的IAM解决方案只能起到预防作用。 ❖企业更需要一个能够检测和响应身份威胁的…

Mysql 备份与还原

目录 一 数据库备份的重要性与分类 1.数据备份的重要性 2. 造成数据丢失的原因 3.从物理与逻辑的角度,备份分为 4.从数据库的备份策略角度,备份可分为 二、常见的备份方法 1.物理冷备 2.专用备份工具mydump或mysqlhotcopy 3.启用二进制日志进行增量…

上手vue2的学习笔记5之在vue2项目中调用elment-ui

前言 上手vue2的学习笔记4之搭建vue环境 参考链接:vue2.0项目引入element-ui 一、安装elment-ui 进入搭建的vue项目中 cd vue_bing_test 安装 element npm i element-ui二、引入elment-ui elment官方教程 将main.js改成如下内容: import Vue fro…

详解C语言自定义类型

目录 一,结构体 1.结构体的基础知识 2.结构体的声明 一般的声明 ‍特殊的声明(匿名结构体类型) 3.结构体的自引用 4.结构体变量的定义和初始化 ‍结构体变量的定义 结构体变量的初始化 结构体变量的嵌套初始化 5.结构体内存对齐 …

240-960MHz带编码器的单片OOK 发射器CMT2157B

CMT2157B 是一款真正意义上的单芯片、高灵活性、超低功耗、带编码器的OOK 射频发射芯片,非常适合于240 至960 MHz 的无线应用场 合。该芯片可实现完全兼容市面上最常用的527、1527、2262 和2240 等编码格式。此外,还支持用户各种自定义编码。该芯片支持4…

c数据类型相关的关键字

变量的相关关键字 charshortintlongfloatdoublestructunion:与共用体相关的关键字enum:枚举signed:定义有符号的,可以保存正数,也可以保存负数unsigned:定义无符号,只能保存正数和0&#xff1b…

【知识点汇总】

罗曼罗兰说:“世界上只有一种真正的英雄主义,那就是在看清生活的真相之后,依然热爱生活。” JAVA开发知识点汇总 JAVAJVM垃圾标记算法三色标记法可达性分析法引用计数法 可以作为GCroots的对象有哪些?GC的种类和触发机制年轻代触…

1、nacos配置中心

一、配置中心存的意义 1、微服务中配置文件的问题 配置文件的问题: 配置文件的数量会随着服务的增加持续递增单个配置文件无法区分多个运行环境配置文件内容无法动态更新,需要重启服务 引入配置文件:刚才架构就会成为这样。是由配置中心统…