当前位置: 首页 > article >正文

Ubuntu部署Docker搭建靶场

前言

我们需要部署Docker来搭建靶场题目,他可以提供一个隔离的环境,方便在不同的机器上部署,接下来,我会记录我的操作过程,简单的部署一道题目


Docker安装

不推荐在物理机上部署,可能会遇到一些问题,这里我用的是我手里现成的Ubuntu虚拟机

首先,我们先提权到管理员

sudo su

更新包管理器

apt update && apt upgrade -y

然后运行以下命令安装Docker

apt install -y docker.io

设置成开机自启

systemctl start docker
systemctl enable docker

我们验证一下是否安装
 

docker --version

 我们可以运行一个测试容器,来看看是否正常输出

docker run hello-world

看起来没啥毛病,接下来,我们输入命令让普通用户也能正常使用

这里添加后还是没效果的话,可以用 groups 用户名 命令来查看用户的组,如果没有docker,就用 usermod -aG docker 用户名 让指定用户添加组

usermod -aG docker $USER
newgrp docker  # 使更改立即生效

然后我们换成普通用户,输入命令看看能否执行成功

不错,接下来,我们部署一个简单的靶场吧


部署靶场

接下来,我准备部署一个简单的CTF靶场,我用的flask做的一个简单的题,题目代码:

from flask import Flask, request
import hashlib
app = Flask(__name__)
key = "ImGuoXiaoYao" #哈希盐值def summon_flag(username):hash = hashlib.md5((username + key).encode()).hexdigest()return f"LJCTF{{{hash[:20]}}}" #取前20位哈希值进行拼接@app.route("/")
def home():return f"<h1 align=""center"">欢迎欢迎,这是道题是简单的源代码漏洞哦<h1>\n<h3 align=""right"">by:GuoXiaoYao</h3>"@app.route("/flag")
def flag(): #获取用户IP地址,然后加盐哈希后,生成独一无二的的flaguser_ip = request.remote_addrflag = summon_flag(user_ip)return f"<h1 align='center'>猜猜flag在哪<h1><!--{flag}--->"if __name__ == "__main__":app.run(host="0.0.0.0", port=5000) #暴露在5000端口

先创建一个文件夹存放文件,接下来,我们开始部署

首先,我们需要进入创建的Docker文件夹,在终端输入代码(或者进入文件夹右键在终端打开)

cd Docker

我们用命令创建个Dockerfile用来定义如何构建Docker镜像

touch Dockerfile

接下来,我们编辑文件,内容如下

# 使用 Python 3.9 作为基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制项目文件到容器
COPY . /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt# 暴露 Flask 运行的端口
EXPOSE 5000# 运行 Flask 应用
CMD ["flask", "run", "--host=0.0.0.0"]

 因为我使用了python中的flask库和requests库,所以需要创建个requirements.txt文件来填写用到的库

touch requirements.txt

在里面填写我们用到的库

flask

(可选)接下来,我们需要创建个.dockerignore文件,来忽略一些文件,提高构建速度

touch .dockerignore

修改文件,内容如下:

__pycache__/
*.pyc
*.pyo
*.log
env/
venv/
.git/
.dockerignore

接下来,我们尝试构建镜像,然后运行试试吧

名字要小写格式,路径和端口号根据自己的需要填写

docker build -t 名字 -f Dockerfile .
docker run -p 映射的端口 名字

开始构建

完成了,我们查看一下镜像,看看有没有构建出来

docker images

 成功了,我们运行试试吧

docker run -p 映射端口号:容器内映射端口号 名字

 我们访问试试

在虚拟机内部访问他提供的地址,在物理机访问虚拟机ip地址+端口

 

成功了,这道题是一道很简单的源代码泄露题,访问/flag即可

按F12查看源代码

成功获取flag


总结

在部署过程中,可能会遇到各种问题,大家根据自己的实际情况进行部署吧

相关文章:

Ubuntu部署Docker搭建靶场

前言 我们需要部署Docker来搭建靶场题目&#xff0c;他可以提供一个隔离的环境&#xff0c;方便在不同的机器上部署&#xff0c;接下来&#xff0c;我会记录我的操作过程&#xff0c;简单的部署一道题目 Docker安装 不推荐在物理机上部署&#xff0c;可能会遇到一些问题&…...

【DFS】羌笛何须怨杨柳,春风不度玉门关 - 4. 二叉树中的深搜

本篇博客给大家带来的是二叉树深度优先搜索的解法技巧,在后面的文章中题目会涉及到回溯和剪枝,遇到了一并讲清楚. &#x1f40e;文章专栏: DFS &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的…...

制作rpm包

使用nfpm制作rpm包&#xff0c;下面是做包使用到的关键文件。 . |-- makefile |-- nfpm.yaml -- scripts |-- postinstall.sh |-- postremove.sh |-- preinstall.sh -- preremove.sh preinstall&#xff1a;在npm install命令前执行 install,postinstal…...

搭建Redis主从集群

主从集群说明 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写分离。 主从结构 这是一个简单的Redis主从集群结构 集群中有一个master节点、两个slave节点&#xff08;现在叫replica&#xff09;…...

1.NextJS基础

NextJS注意要点 文件用来定义路由&#xff0c;folder name becomes the route name注意区分客户端渲染和服务器渲染 html渲染完成后给到客户端&#xff08;此时网页内容已经全部提供&#xff09;&#xff0c;有利于crawler和优化seo逻辑更简单request deduplication减少API请求…...

【时时三省】(C语言基础)选择结构和条件判断

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 选择结构和条件判断 在现实生活中需要进行判断和选择的情况是很多的。如:从北京出发上高速公路,到一个岔路口,有两个出口,一个是去上海方向,另一个是沈阳方向。驾车者到此处必须进行判断,根据自己的目的地…...

作业12 (2023-05-15 指针概念)

第1题/共11题【单选题】 关于指针的概念,错误的是:( ) A.指针变量是用来存放地址的变量 B.指针变量中存的有效地址可以唯一指向内存中的一块区域 C.野指针也可以正常使用 D.局部指针变量不初始化就是野指针 回答正确 答案解析: A:正确,指针变量中存储的是一个地址,指…...

WSL2增加memory问题

我装的是Ubuntu24-04版本&#xff0c;所有的WSL2子系统默认memory为主存的一半&#xff08;我的电脑是16GB&#xff0c;wsl是8GB&#xff09;&#xff0c;可以通过命令查看&#xff1a; free -h #查看ubuntu的memory和swap &#xff08;改过的11GB&#xff09; 前几天由于配置E…...

git 合并多次提交 commit

在工作中&#xff0c;有时候在反复修改代码中&#xff08;比如处理MR的检视意见&#xff0c;或者为了推送到测试环境&#xff0c;先 commit到自己的远程分支上&#xff09;不免会有多次 commit&#xff0c;这样发起 MR 的时候&#xff0c;就会有一堆 commit 信息&#xff0c;看…...

Wireshark网络抓包分析使用详解

序言 之前学计网还有前几天备考华为 ICT 网络赛道时都有了解认识 Wireshark&#xff0c;但一直没怎么专门去用过&#xff0c;也没去系统学习过&#xff0c;就想趁着备考的网络相关知识还没忘光&#xff0c;先来系统学下整理点笔记~ 什么是抓包&#xff1f;抓包就是将网络传输…...

【OpenGL】GLSL基础语法

GLSL&#xff08;OpenGL Shading Language&#xff09;是用于编写 OpenGL 着色器程序的高级编程语言&#xff0c;主要分为顶点着色器&#xff08;Vertex Shader&#xff09;、片段着色器&#xff08;Fragment Shader&#xff09;&#xff0c;有时还会用到几何着色器&#xff08…...

前端实现截图功能

前端实现截图 在前端开发中&#xff0c;有时我们需要在网页中实现截图功能。无论是为了记录页面内容、生成报告&#xff0c;还是制作网页截图&#xff0c;掌握如何在浏览器中进行截图是非常实用的。今天&#xff0c;我将通过一个简单的示例&#xff0c;介绍如何使用 html2canv…...

如何分析和解决服务器的僵尸进程问题

### 如何分析和解决服务器的僵尸进程问题 #### **一、僵尸进程的定义与影响** **僵尸进程&#xff08;Zombie Process&#xff09;** 是已终止但未被父进程回收资源的进程。其特点&#xff1a; - **状态标识**&#xff1a;在进程列表&#xff08;如 ps 或 top&#xff09;中标…...

智能提示词生成器:助力测试工程师快速设计高质量测试用例

在软件测试中,测试用例设计方法的选择和实施是确保软件质量的重要步骤。测试工程师经常需要根据不同的测试场景、参数维度和业务需求,设计出覆盖率高且有效的测试用例。然而,设计测试用例并非易事,特别是在面对复杂的业务逻辑时。 为了帮助测试工程师高效生成测试用例提示…...

XXL-Job 二次分片是怎么做的?有什么问题?怎么去优化的?

XXL-JOB二次分片机制及优化策略 二次分片实现原理 XXL-JOB的二次分片是在分片广播策略的基础上&#xff0c;由开发者自行实现的更细粒度数据拆分。核心流程如下&#xff1a; 初次分片&#xff1a;调度中心根据执行器实例数量&#xff08;总分片数n&#xff09;分配分片索引i&…...

java版嘎嘎快充玉阳软件互联互通中电联云快充协议充电桩铁塔协议汽车单车一体充电系统源码uniapp

演示&#xff1a; 微信小程序&#xff1a;嘎嘎快充 http://server.s34.cn:1888/ 系统管理员 admin/123456 运营管理员 yyadmin/Yyadmin2024 运营商 operator/operator2024 系统特色&#xff1a; 多商户、汽车单车一体、互联互通、移动管理端&#xff08;开发中&#xff09; 另…...

SpringMVC 配置详解

SpringMVC 是 Spring 框架中用于构建 Web 应用程序的模块&#xff0c;它基于 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;能够将业务逻辑、数据和显示分离&#xff0c;从而提高代码的可维护性和可扩展性。本文将详细介绍 SpringMVC 的配置步骤和相关…...

详细Linux中级知识(不断完善)

Nginx服务配置 基于主机名配置 映射IP和主机名 [rootlocalhost ~]# vim /etc/hosts 192.168.72.135 www.chengke.com chengke[rootlocalhost ~]# echo "192.168.72.135 www.xx.com" >> /etc/hosts以上是两种方法&#xff0c;前面是你的IP地址&#xff0c;后…...

Spatial Multiplexing Power Save

802.11n中添加的PSMP&#xff0c;SMPS机制。 SM 节能功能可让 STA 在大部分时间内仅通过一条活动接收链运行&#xff0c;从而达到节能目的。 空间复用省电(Spatial Multiplexing Power Save&#xff09;模式下&#xff0c;节点会关闭多余的天线&#xff0c;仅仅使用一根天线进…...

2025年渗透测试面试题总结-某360-企业蓝军面试复盘 (题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 360-企业蓝军 一、Shiro绕WAF实战方案 二、WebLogic遭遇WAF拦截后的渗透路径 三、JBoss/WebLogic反序…...

实时图像处理:让你的应用更智能

I. 引言 实时图像处理在现代应用中扮演着重要的角色&#xff0c;它能够使应用更加智能、响应更加迅速。本文将深入探讨实时图像处理的原理、部署过程以及未来的发展趋势&#xff0c;旨在帮助开发者更好地理解如何将实时图像处理应用于他们的项目中。 II. 实时图像处理的基础概…...

C语言基础—函数指针与指针函数

函数指针 定义 函数指针本质上是指针&#xff0c;它是函数的指针&#xff08;定义了一个指针变量&#xff0c;变量中存储了函数的地址&#xff09;。函数都有一个入口地址&#xff0c;所谓指向函数的指针&#xff0c;就是指向函数的入口地址。这里函数名就代表入口地址。 函…...

用DrissionPage升级网易云音乐爬虫:更稳定高效地获取歌单音乐(附原码)

一、传统爬虫的痛点分析 原代码使用requests re的方案存在以下局限性&#xff1a; 动态内容缺失&#xff1a;无法获取JavaScript渲染后的页面内容 维护成本高&#xff1a;网页结构变化需频繁调整正则表达式 反爬易触发&#xff1a;简单请求头伪造容易被识别 资源消耗大&am…...

OpenCV图像拼接(5)构建图像的拉普拉斯金字塔 (Laplacian Pyramid)

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::createLaplacePyr 是 OpenCV 中的一个函数&#xff0c;用于构建图像的拉普拉斯金字塔 (Laplacian Pyramid)。拉普拉斯金字塔是一种多…...

03 Python 基础:数据类型、运算符与流程控制解析

文章目录 一、数据类型 内置的六大类数字类型整数类型 int浮点数 float布尔 bool字符串 str 变量命名 二、数字类型的相互转换显式类型的转换整数&#xff0c;浮点数&#xff0c;复数 之间的显式转换 隐式类型的转换 三、标识符算术运算符比较运算符逻辑运算符位运算符赋值运算…...

通俗一点介绍什么是场外期权交易 ?

场外期权是交易所以外的市场进行交易的期权&#xff0c;主要由期货公司、证券公司等金融机构根据客户具体要求进行设计&#xff0c;最终由期货公司等机构与客户签订协议的形式进行&#xff0c;通俗一点理解场外期权就是股票做多的玩法交易&#xff0c;下文为大家科普通俗一点介…...

蓝桥杯备考:图的遍历

这道题乍一看好像没什么不对的&#xff0c;但是&#xff01;但是&#xff01;结点最大可以到10的5次方&#xff01;&#xff01;&#xff01;我们递归的时间复杂度是很高的&#xff0c;我们正常遍历是肯定通过不了的&#xff0c;不信的话我们试一下 #include <iostream>…...

【机器学习/大模型/八股文 面经 (一)】

1. PPO算法中使用GAE的好处以及参数γ和λ的作用是什么? 参考答案: GAE(Generalized Advantage Estimation) 的优势在于通过指数加权多步TD误差,平衡优势估计的偏差与方差,提升策略优化的稳定性。γ(折扣因子):控制未来奖励的衰减程度,值越大表示更关注长期收益。λ…...

IIS漏洞攻略

一&#xff0c;PUT漏洞 1&#xff0c;在windows server 2003 中开启 WebDAV 和写权限&#xff0c;然后访问并使用BP抓包 2&#xff0c;使用PUT上传一个木马文件&#xff0c;后缀要改成其他格式 3&#xff0c;将上传的木马文件的内容写入到asp文件中&#xff0c;然后进行连接即…...

C++《红黑树》

在之前的篇章当中我们已经了解了基于二叉搜索树的AVL树&#xff0c;那么接下来在本篇当中将继续来学习另一种基于二叉搜索树的树状结构——红黑树&#xff0c;在此和之前学习AVL树类似还是通过先了解红黑树是什么以及红黑树的结构特点&#xff0c;接下来在试着实现红黑树的结构…...