泷羽Sec-分享网络安全 | 安全产品测评 | 网站建设 - Docker
type: channel
link: https://longyusec.com/tag/docker/
items: Python很慢？这十个方法让你的代码执行速度提升3倍！
items: GZCTF动态flag部署教程
items: GZCTF比赛平台搭建——单Docker部署
items: 灯塔安装教程

Python很慢？这十个方法让你的代码执行速度提升3倍！
type: item
date: 2026-06-25T20:20:00+08:00
description: 前言Python，作为一种动态类型的解释性语言，确实在执行速度上可能不如C这样的静态类型的编译语言。但是，通过一些技巧和策略，我们可以显著提升Python代码的性能。本文将探讨如何通过优化方法使Python代码运行得更快、更高效。我们将利用Python的timeit模块来精确测量代码的执行时间。注意：timeit模块在默认情况下会重复执行代码一百万次，以确保测量结果的准确性和稳定性def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': # 执行print_hi('PyCharm')方法 t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("PyCharm")') t.timeit()如何计算Python脚本的运行时间呢？在time模块中time.perf_counter()提供了一个高精度的计时器，适合测量短时间，例如import time # 记录程序开始时间 start_time = time.perf_counter() # 你的代码逻辑 # ... # 记录程序结束时间 end_time = time.perf_counter() # 计算程序运行时间 run_time = end_time - start_time print(f"程序运行时间：{run_time} 秒")介绍一、I/O密集型操作I/O密集型操作（Input/Output Intensive Operation）指的是那些在执行过程中，大部分时间都花在等待输入/输出操作完成的程序或任务。I/O操作包括从磁盘读取数据、写入数据到磁盘、网络通信等。这些操作通常涉及到硬件设备，因此它们的执行速度受到硬件性能和I/O带宽的限制。他们的特点有：\1. 等待时间：程序在执行I/O操作时，往往需要等待数据从外部设备传输到内存，或从内存传输到外部设备，这会导致程序的执行被阻塞。\2. CPU利用效率：由于I/O操作的等待时间，CPU在这段时间内可能处于空闲状态，导致CPU利用率不高。\3. 性能瓶颈：I/O操作的速度往往成为程序性能的瓶颈，尤其是在数据量大或传输速度慢的情况下。例如，使用I/O密集型操作print，运行一百万次import time import timeit def print_hi(name): print(f'Hi, {name}') return if __name__ == '__main__': start_time = time.perf_counter() # 执行print_hi('PyCharm')方法 t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("PyCharm")') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间：{run_time} 秒")运行结果为3s而不使用i/o操作执行一个方法，即调用这个print_hi('xxxx')空方法，不使用print()，程序明显快了不少def print_hi(name): # print(f'Hi, {name}') return如果代码中必要的时候，例如文件读写，可以使用如下方法提高效率异步I/O：使用异步编程模式例如asyncio，允许程序在等待I/O操作完成时继续执行其他任务，从而提高CPU利用率。缓冲：使用缓冲区暂存数据，减少I/O操作的频率。并行处理：并行执行多个I/O操作，以提高整体的数据处理速度。优化数据结构：选择合适的数据结构，减少数据的读取和写入次数。二、使用生成器生成列表、字典在Python 2.7及其后续版本中，引入了对列表、字典和集合生成器的改进，这些改进让数据结构的构建过程更加简明和高效。1、传统方法def fun1(): list=[] for i in range(100): list.append(i) if __name__ == '__main__': start_time = time.perf_counter() t = timeit.Timer(setup='from __main__ import fun1', stmt='fun1()') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间：{run_time} 秒") #…

GZCTF动态flag部署教程
type: item
date: 2025-05-18T18:26:18+08:00
description: 前言不知道为什么今天，我的DockerHub push的时候连接超时，只能本地演示了，不上传到自己的Dockerhub，如果你们有自己的加速源，当然也可以之际push到自己的DockerHub仓库。Web篇章web题，首先是需要按照常规逻辑写一个网页，这里就写一个带flag的简单网页，把flag放在源代码里，并注释掉。创建一个html文件，代码如下 签到 <?php echo "Do u want 2 sign?? "; ?> 我所使用的平台无需暴露端口，如有需要可以使用EXPOSE 80暴露80端口。接下来实现动态flag，还记得上面提到的flag.sh吗，先来看一下它的代码，同样相关解释写在注释里，正式使用记得删掉注释。#!/bin/sh #必需的东西没什么好讲的 sed -i "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php #使用平台的动态flag替换 # index.php中的flag，这里我使用的平台为GZCTF，因此动态flag环境变量为$GZCTF_FLAG，其他平台一般为$FLAG export GZCTF_FLAG="" #这一句暂时不知道什么作用，但是要写着flag.sh文件完整内容#!/bin/sh sed -i "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php export GZCTF_FLAG=""接下来编写Dockerfile，各语句解释就写在后面的注释里吧，正式编写请删掉注释。FROM CTFtraining/base_image_nginx_mysql_php_56 #web题Docker基础镜像，这里使用CTFtraing打包好 的，包含了基础的nginx，mysql，php环境，并且会自动运行flag.sh脚本(后面会提到)，本题使用php环境。 COPY src /var/www/html # 将你编写的网页源码复制到Docker容器中，这里为php网页，因此只需要 复制源码到/var/www/html就可以了，其他类型网页按照实际部署情况COPY到Docker中相应目录下就可以了 RUN mv /var/www/html/flag.sh / #把你源码中的flag.sh复制到根目录以便自动执行 && chmod +x /flag.sh #添加运行权限Dockerfile完整内容FROM CTFtraining/base_image_nginx_mysql_php_56 COPY src /var/www/html RUN mv /var/www/html/flag.sh / && chmod +x /flag.sh目录结构确保你已经Docker login，拥有自己的Docker账号使用build命令，构建本地的题目镜像，xiaoyuss为你的docker镜像名，可以参考我以前的文章，webtest为镜像名(自定义)，"."为版本号，代表latest，也可以自定义，不过拉取时记得加上版本号docker build -t name/webtest .接下来部署题目，类型记得选择动态容器，不同平台可能有所不同，这里以GZCTF为例。启动赛题flag随机生成成功PWN篇首先下载一个库，pwn题基本逻辑一般为利用栈溢出漏洞，打通后得到shell权限，因此把flag文件放在容器的根目录或其他目录下即可，为了安全，这里在ctf_xinetd基础上做出一些修改来进行pwn题的部署git clone https://github.com/Eadom/ctf_xinetd.git cd ctf_xinetd修改Dockerfile如下内容FROM ubuntu:16.04 RUN sed -i "s/http://archive.ubuntu.com/http://mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list && apt-get update && apt-get -y dist-upgrade && apt-get install -y lib32z1 xinetd RUN useradd -m ctf WORKDIR /home/ctf RUN cp -R /lib* /home/ctf && cp -R /usr/lib* /home/ctf RUN mkdir /home/ctf/dev && mknod /home/ctf/dev/null c 1 3 && mknod /home/ctf/dev/zero c 1 5 && mknod /home/ctf/dev/random c 1 8 && mknod …

GZCTF比赛平台搭建——单Docker部署
type: item
date: 2025-05-18T18:26:18+08:00
description: 前言GZCTF，一个开源的网络安全竞赛平台，它巧妙地融合了React.js前端技术和Django后端架构，为用户提供了一个通过实战演练提升安全技能的宝贵舞台。无论你是初学者、教育机构还是企业培训部门，GZCTF都能满足你的需求，其丰富的功能如权限控制、加密通信以及自定义赛事等，将带给你前所未有的使用体验。官方文档：https://docs.ctf.gzti.me/zh/quick-start操作系统：ubuntu-22.04.4（已重装）1、换源从0开始，换源vim /etc/apt/sources.list修改为如下内容deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse更新apt源：apt update2、安装Docker继去年Docker Hub被封锁后，各大NAS的注册表均出现问题，例如群晖的Docker套件注册表无法连接（更新至DSM7.2版本后恢复）。而在今年2024年6月初（约2024.06.06），NAS中最重要的工具Docker又面临无法使用的问题。常用镜像站：阿里云、科大、南大、上交等，全部挂掉。2.1更新系统软件包：sudo apt update2.2安装已经配置的镜像源最新版：apt install Docker-ce Docker-ce-cli containerd.io2.3换Docker源vim /etc/Docker/daemon.json修改为如下内容{ "registry-mirrors": [ "https://ustc-edu-cn.mirror.aliyuncs.com/", "https://ccr.ccs.tencentyun.com/", "https://docker.m.daocloud.io/", "https://dockerhub.azk8s.cn", "https://mirror.baidubce.com", "https://docker.nju.edu.cn", "https://mirror.iscas.ac.cn", "https://dockerhub.icu", "https://docker.anyhub.us.kg", "https://hub.gog.email", "https://dockerpull.com", "https://atomhub.openatom.cn" ] }添加好了之后，重启Docker服务sudo systemctl restart Docker 或者 sudo systemctl restart docker.service //如果一个命令不行就换上面一个查看docker信息docker info配置docker开机自启sudo systemctl restart docker 或者 systemctl enable docker.service //如果一个命令不行就换上面一个3. GZ…

灯塔安装教程
type: item
date: 2025-05-18T18:26:18+08:00
description: 【信息收集】24年11月最新灯塔安装教程最近做总结课程总结，安装灯塔的时候，遇到了下面这两种问题，官方镜像不在了应该是，拉取不了。然后搜了很多资料发现了这个东西，人家已经装好的2.6.1版本，用docker导入就好了百度网盘: https://pan.baidu.com/s/1-V-0M-sXHEqi1Ri-6FrNew?pwd=1212 下载后，放到kali里面（这里我用的kali，比较方便，可以使用自己的服务器或者习惯的操作系统），用解压命令unzipunzip ARL.zip总共多出4个压缩包，这个ARL-2.6.1.zip就不要导入到docker了，后面要解压解压ARL-2.6.1.zip切换到ARL-2.6.1使用ls -a可以看到隐藏的 .env 文件注意，修改的时候一定不要少了那个 v创建数据库arl_dbdocker-compose up -d访问http://服务器IP地址:5003即可登录，默认账号密码admin/arlpass（友情提醒：登陆后请立即修改密码）添加任务等待扫描完成导出异常这里需要修改你的 config-docker.yaml文件，去fofa对接自己的api修改配置文件后，重新执行如下命令更新配置，就可以使用了docker-compose restart因为是注册用户，不支持api的调用这里我开了一个高级会员，api key，给大家一起用，在这个链接，如果出现超时，那么就是当日导出数量过多，第二天再来查就行https://mp.weixin.qq.com/s/ngY7rtth0OjVe83c8r-Fvg这里我是没有新加策略的等待资产搜集完成查看ip信息导出数据使用策略，新加一个策略之后下发fofa任务就可以指定策略了，刚刚不小心把导出次数用完了，，，查询的时候注意加上 size 关键字。。。。那就静静等待，12点后，哈哈哈哈这时候就有其他信息了在你添加的策略勾选的信息，这里都会有SSL证书信息服务及端口指纹统计计划任务貌似出bug了，添加的时候添加不上还有更多，自行尝试吧往期推荐111