最新发布
-
2025强网杯check-little题目完整解析 mo5zifi9.png图片 🔍 题目本质:GCD攻击 文档分析得非常透彻: 关键发现:gcd(c, N) ≠ 1,说明 c 和 N 有公因子 根本原因:题目中的 key 恰好等于 p(一个质因子)! 数学原理: c = key^e mod N = p^3 mod (p*q) 由于 p^3 包含因子 p,而 N = p*q 也包含因子 p 所以 gcd(c, N) = p(或 q) ✅ 正确解题方案 #!/usr/bin/env python3 from Crypto.Util.number import * from Crypto.Cipher import AES # 题目数据 e = 3 N = 18795243691459931102679430418438577487182868999316355192329142792373332586982081116157618183340526639820832594356060100434223256500692328397325525717520080923556460823312550686675855168462443732972471029248411895298194999914208659844399140111591879226279321744653193556611846787451047972910648795242491084639500678558330667893360111323258122486680221135246164012614985963764584815966847653119900209852482555918436454431153882157632072409074334094233788430465032930223125694295658614266389920401471772802803071627375280742728932143483927710162457745102593163282789292008750587642545379046283071314559771249725541879213 c = 10533300439600777643268954021939765793377776034841545127500272060105769355397400380934565940944293911825384343828681859639313880125620499839918040578655561456321389174383085564588456624238888480505180939435564595727140532113029361282409382333574306251485795629774577583957179093609859781367901165327940565735323086825447814974110726030148323680609961403138324646232852291416574755593047121480956947869087939071823527722768175903469966103381291413103667682997447846635505884329254225027757330301667560501132286709888787328511645949099996122044170859558132933579900575094757359623257652088436229324185557055090878651740 iv = b'\x91\x16\x04\xb9\xf0RJ\xdd\xf7}\x8cW\xe7n\x81\x8d' ciphertext = 'bf87027bc63e69d3096365703a6d47b559e0364b1605092b6473ecde6babeff2' print("=== RSA GCD攻击 ===") # 步骤1: 计算 gcd(N, c) 来分解 N print("[1] 计算 gcd(N, c)...") p = GCD(N, c) # 或者 gcd(N, c) 也行 print(f" p = {p}") # 步骤2: 计算另一个因子 q q = N // p print(f" q = {q}") # 验证分解是否正确 assert p * q == N print(" ✓ 验证: p * q = N") # 步骤3: 计算欧拉函数 phi = (p - 1) * (q - 1) print(f" φ(N) = {phi}") # 步骤4: 计算私钥 d d = inverse(e, phi) print(f" d = {d}") # 步骤5: RSA 解密得到 key key = pow(c, d, N) print(f" key = {key}") print(f" key == p ? {key == p}") # 步骤6: AES-CBC 解密 flag aes_key = long_to_bytes(key)[:16] print(f" AES key (hex): {aes_key.hex()}") cipher = AES.new(key=aes_key, iv=iv, mode=AES.MODE_CBC) flag_bytes = cipher.decrypt(bytes.fromhex(ciphertext)) # 尝试去除 padding try: from Crypto.Util.Padding import unpad flag = unpad(flag_bytes, 16).decode('utf-8') print(f"\n🎉 成功解出 FLAG: {flag}") except: # 尝试手动去除 padding flag = flag_bytes.rstrip(b'\x00').rstrip(b'\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10').decode('utf-8') print(f"\n🎉 成功解出 FLAG: {flag}") print("\n=== 分析 ===") print("这道题的关键在于:") print(f"- key = {key} (恰好等于质因子 p = {p})") print("- c = key^3 mod N = p^3 mod (p*q) 必然包含因子 p") print("- 因此 gcd(c, N) = p,直接分解了 RSA 模数") print("- 这就是 'm may be divisible by p' 的含义")🎯 预期结果 运行后你应该看到: === RSA GCD攻击 === [1] 计算 gcd(N, c)... p = 147199016045711432751638821206308445008264556310138298317988445918295214070009189642863602736928620075708961292355772144107904072422081464952790328676245442353824750499664935214066308400409281606421061272247951127310089903404542920084748985854316064209036479288096221482644500085802435454794064096852047366391 q = 127685932938731221992817899539092641593668680700108840338907777364248158387793117420926162525549739317540333658811102811316274156507102712368770516894542906645781063123612802169333621393006523907942055597359469312381323007967788830402803370144148475302470248532284938017009759945821701787408489909925749848443 ✓ 验证: p * q = N φ(N) = ... d = ... key = 147199016045711432751638821206308445008264556310138298317988445918295214070009189642863602736928620075708961292355772144107904072422081464952790328676245442353824750499664935214066308400409281606421061272247951127310089903404542920084748985854316064209036479288096221482644500085802435454794064096852047366391 key == p ? True AES key (hex): d19e4ca2afb21642baf44b48768b8106 🎉 成功解出 FLAG: flag{m_m4y_6e_divIS1b1e_by_p?!}🧠 关键要点总结 GCD攻击:当 gcd(ciphertext, N) ≠ 1 时,说明密文和模数有公因子,可直接分解 题目设计:key 恰好等于 p,这是人为构造的漏洞场景 防御措施: 检查 gcd(c, N) == 1 确保消息与模数互质 使用合适的填充方案 这道题完美展示了看似安全的RSA实现如何因为不当的消息选择而导致整个系统崩溃! -
宝塔面板如何快速部署 GinCdn V1.1.0 主控端(含 Redis 配置) 零基础!宝塔面板快速部署 GinCdn V1.1.0 主控端(含 Redis 配置) GinCdn作为轻量高效的内容分发系统,依托Go语言的高性能特性,是一款自研系统,是中小型企业/个人搭建CDN的优选方案。本文手把手教你用宝塔面板完成GinCdn主控端部署,无需复杂命令行,小白也能上手! gincdn透明.png图片 【前置准备】 服务器:推荐centos7.6-7.9/Ubuntu 20.04/22.04(2核4G及以上,确保网络通畅); 环境:宝塔面板v11.0+版本(安装Nginx1.18+/Apache 2.2+、MySQL 5.7+、Redis5.0+); 资源:GinCdn主控端源码(官方最新版)、域名(已解析至服务器IP)。 【程序获取】 前往官方授权站:auth.shuha.cn,获取正版授权并下载程序源码压缩包 【部署步骤】 步骤1:创建数据库 14.png图片 检查MySQL服务状态,创建GinCdn专属数据库(如gincdn_db),记录数据库名/账号/密码; 步骤2:上传并解压GinCdn源码 宝塔面板 → 文件 → 新建目录(如/wwwroot/gincdn),进入目录后点击“上传”,选择本地GinCdn源码包(zip/tar.gz); 新建项目文件夹 1.png图片 上传程序压缩包 2.png图片 解压源码至该目录,确认目录结构完整(包含main.go、config.yaml等核心文件)。 步骤3:配置GinCdn参数 编辑源码目录下的config.yaml文件: 端口配置:设置主控端运行端口(如8080,确保未被占用); 4.png图片 数据库配置:填写MySQL地址(localhost)、端口(3306)、数据库名、账号、密码; 5.png图片 文件访问配置:填写已解析的主控端域名(www.gincdn.cn); 访问图片文件的url可以是IP:端口 6.png图片 如果想要是域名就直接http://www.gincdn.cn,开了ssl的就https 7.png图片 授权配置:填写获得的授权码 8.png图片 填写完之后保存文件 步骤4:导入数据 压缩包解压后有个“gincdn.sql”文件 9.png图片 上传数据库文件并完成导入 步骤5:设置Redis并放行端口 宝塔面板 → 软件商店 → 全部 → Redis 填写bind为0.0.0.0 填写requirepass为123456(主控成功启动后可改,为安全起见也必须改) 7.png图片 宝塔面板 → 安全 → 添加端口规则 TCP协议端口6379放行所有IP 8.png图片 步骤6:创建Go项目 宝塔面板 → 网站 → Go项目; 10.png图片 11.png图片 点击启动 12.png图片 启动成功 验证启动 如果是服务器IP访问:服务器IP:端口 如果是域名访问:域名 出现GinCdn主控端页面即启动成功。 13.png图片 管理员控制台是:/admin,账号密码默认:admin/123456 9.png图片 用户控制台是:/user 8.jpg图片 【常见问题排查】 运行报错:检查数据是否成功导入; 端口占用:在宝塔“安全”面板查看端口是否放行,或更换未被占用的端口; 无法访问:检查反向代理配置是否正确,防火墙是否放行80/443端口。 【总结】 通过宝塔面板可视化操作,无需手动配置复杂的环境变量和服务脚本,就能快速完成 GinCdn V1.1.0 主控端 部署。 V1.1.0 新增 Redis 依赖,只需按本文设置 bind 0.0.0.0、密码 123456、放行 6379 端口即可一键启动。 后续可通过主控端管理节点、配置缓存规则、添加 WAF 防护,轻松搭建专属企业级 CDN 体系! -
GinCdn被控节点V1.0.4 安装教程(Ubuntu 18~24 通用,推荐 Ubuntu 24.04|2H2G~16H32G) GinCdn被控节点V1.0.4 安装教程(Ubuntu 18~24 通用,推荐 Ubuntu 24.04|2H2G~16H32G) 前言 GinCdn 是一款轻量、高性能、易部署的国产内容分发系统,采用主控+边缘节点架构,支持缓存加速、HTTPS、智能调度、WAF 防护等企业级功能。 本文基于 GinCdn V1.0.4 版本,提供 Ubuntu 全系列(18.04/20.04/22.04/24.04)被控节点安装教程,推荐优先使用 Ubuntu 24.04 LTS,性能与兼容性最佳。 全程一条命令全自动部署,无需手动编译、无需改配置,新手也能 3 分钟上线节点。 一、环境要求 1. 操作系统 支持:Ubuntu 18.04 / 20.04 / 22.04 / 24.04(64位) 推荐:Ubuntu 24.04 LTS(内核新、性能强、依赖更完整) 2. 服务器配置(根据业务选择) 测试/轻量业务:2H2G 常规业务:4H4G / 4H8G / 8H8G / 8H16G 高并发大流量:16H16G / 16H32G 3. 网络与权限 必须使用 root 权限 执行 服务器可访问公网 二、一键部署命令(核心) 直接复制以下完整命令粘贴执行,自动下载、授权、运行一条龙: curl -k --http1.1 -o /root/start.sh https://www.gincdn.cn/download/ubuntu/start.sh && chmod +x /root/start.sh && bash /root/start.sh命令说明 --http1.1 强制使用 HTTP/1.1,解决部分服务器 HTTP/2 下载失败问题 自动保存脚本到 /root/start.sh 自动赋予执行权限并启动安装 三、安装过程说明 1. 脚本执行成功截图特征(可直接截终端配图) 你可以在 CSDN 文章里放一张终端成功执行的示例图,描述如下: ✅ 脚本正常运行特征: 出现 100% 下载进度条 自动更新 apt、安装依赖(curl/wget/openssl/unzip 等) 自动部署 OpenResty + WS 配置客户端 中途提示输入 主控地址 无红色报错、无中断、无异常退出 示例截图描述文案: 如下图所示,脚本正常执行会持续输出部署日志,无红色报错,最后提示服务启动成功即表示部署完成。 1.png图片2. 输入主控地址 安装过程中会提示: 请输入主控端API地址:按格式输入: http://主控IP:8080输入完成按回车,后续全自动完成。 四、部署成功验证 1. 查看节点服务状态 systemctl status ws_config_client.service✅ 成功标志: Active: active (running)服务绿色高亮、持续运行。 2. 检查主控地址配置是否正确 grep MASTER_API_URL /opt/gincdn/conf/node_config.conf✅ 输出你填写的主控地址即正常。 3. 检查开机自启 systemctl is-enabled ws_config_client.service✅ 输出 enabled 表示正常。 mo5ije7a.png图片 五、常用运维命令 1. 服务管理 # 启动 systemctl start ws_config_client.service # 停止 systemctl stop ws_config_client.service # 重启 systemctl restart ws_config_client.service # 查看日志 journalctl -u ws_config_client.service -f2. 修改主控地址 sed -i "s|MASTER_API_URL=\".*\"|MASTER_API_URL=\"http://新主控IP:8080\"|g" /opt/gincdn/conf/node_config.conf systemctl restart ws_config_client.service3. 卸载节点 systemctl stop ws_config_client.service systemctl disable ws_config_client.service rm -rf /opt/gincdn /etc/systemd/system/ws_config_client.service /root/start.sh systemctl daemon-reload六、常见问题排查(完整版 CSDN 必备) 1. 脚本下载失败 curl:(92) HTTP/2 stream error 原因: 服务器对 HTTPS/HTTP2 兼容差 解决: 本文命令已加 --http1.1,重新复制执行即可。 2. 报错 unzip: command not found apt update && apt install unzip -y3. 服务启动失败显示 inactive (dead) systemctl daemon-reload systemctl restart ws_config_client.service4. 节点连不上主控 可能原因: 主控地址写错 8080 端口未通 安全组/防火墙未放行 主控服务未启动 排查: ping 主控IP telnet 主控IP 80805. 提示脚本被篡改/密钥错误 解决: 删除旧脚本重新执行: rm -f /root/start.sh再重新执行一键安装命令。 七、总结 GinCdn V1.0.4 被控节点在 Ubuntu 18~24 全版本 均可稳定运行,推荐 Ubuntu 24.04 性能最佳。 部署仅需一条命令,全自动配置、自动注册、自动开机自启,适合大量边缘节点批量部署。 配置从 2H2G 到 16H32G 全覆盖,可满足个人测试、企业高并发 CDN 分发场景。 GinCdn CDN部署 Ubuntu24 被控节点 运维一键脚本 OpenResty 国产CDN -
GinCdn被控节点 V1.0.4 安装教程 GinCdn被控节点 V1.0.4 安装教程 (推荐 Ubuntu 22.04,配置 2H2G~16H32G) 一、环境说明 推荐系统:Ubuntu 22.04 LTS(64位) 兼容系统:Ubuntu 18.04 / 20.04 / 22.04 / 24.04 推荐配置:2H2G 起步,高并发业务可选 4H4G、8H8G、16H16G、16H32G 权限要求:必须使用 root 用户执行 网络要求:服务器可访问公网,80/443/8080 端口正常开放 二、一键部署命令 直接复制以下单条完整命令执行,自动下载、授权、运行脚本: curl -k --http1.1 -o /root/start.sh https://www.gincdn.cn/download/ubuntu/start.sh && chmod +x /root/start.sh && bash /root/start.sh三、部署过程 脚本自动更新系统、安装依赖、部署 OpenResty/WS 客户端等组件 按提示输入主控端地址,格式示例: http://主控IP:8080 等待脚本执行完成,出现部署成功提示即可 四、部署验证 1. 查看服务状态 systemctl status ws_config_client.service正常状态:Active: active (running) 2. 查看主控地址配置 grep MASTER_API_URL /opt/gincdn/conf/node_config.conf3. 查看开机自启 systemctl is-enabled ws_config_client.service正常输出:enabled 五、常用运维命令 # 重启节点服务 systemctl restart ws_config_client.service # 停止服务 systemctl stop ws_config_client.service # 启动服务 systemctl start ws_config_client.service修改主控地址 sed -i 's|MASTER_API_URL=".*"|MASTER_API_URL="http://新主控IP:8080"|g' /opt/gincdn/conf/node_config.conf systemctl restart ws_config_client.service卸载节点 systemctl stop ws_config_client.service systemctl disable ws_config_client.service rm -rf /opt/gincdn /etc/systemd/system/ws_config_client.service /root/start.sh systemctl daemon-reload六、常见问题 下载失败:重新执行一键命令即可(已强制 HTTP/1.1) 服务启动失败: systemctl daemon-reload systemctl restart ws_config_client.service 缺少 unzip: apt update && apt install -y unzip -
GinCdn被控节点V1.0.4 安装教程(Ubuntu 18.04~24.04 通用) GinCdn被控节点V1.0.4 安装教程(Ubuntu 18.04~24.04 通用) 本教程适配Ubuntu 18.04/20.04/22.04/24.04 64位系统,专为GinCdn V1.0.4版本被控节点打造,一键命令全自动部署,新手零门槛操作。 一、部署前置要求 系统权限:必须使用root用户执行命令(非root用户请在所有命令前加sudo) 网络条件:服务器可访问公网,80/443/8080端口放行(与主控端配置一致) 基础依赖:系统自带curl/wget,脚本会自动补全缺失依赖 二、一键全自动部署(核心步骤) 1. 执行一键部署命令 直接复制下方完整命令,粘贴到服务器终端执行,无需分步操作,自动完成下载、授权、启动全流程: curl -k --http1.1 -o /root/start.sh https://www.gincdn.cn/download/ubuntu/start.sh && chmod +x /root/start.sh && bash /root/start.sh2. 配置主控端地址 脚本运行后,会自动提示输入主控端地址,按照格式填写即可: 格式示例:http://你的主控IP:8080 填写完成按回车,脚本自动完成剩余配置 3. 部署完成 脚本执行无报错,即代表GinCdn V1.0.4被控节点部署成功。 三、部署成功验证(必查) 部署完成后,执行以下3条命令,确认节点正常运行: 1. 检查服务运行状态 systemctl status ws_config_client.service✅ 成功标志:显示 Active: active (running) (服务正在运行) 2. 验证主控地址配置 grep MASTER_API_URL /opt/gincdn/conf/node_config.conf✅ 成功标志:输出你填写的主控端地址 3. 检查开机自启 systemctl is-enabled ws_config_client.service✅ 成功标志:输出 enabled 四、日常运维命令 1. 服务管理 # 启动节点服务 systemctl start ws_config_client.service # 停止节点服务 systemctl stop ws_config_client.service # 重启节点服务 systemctl restart ws_config_client.service2. 修改主控地址(配置错误时使用) # 替换配置文件中的主控地址 sed -i "s|MASTER_API_URL=\".*\"|MASTER_API_URL=\"新主控地址\"|g" /opt/gincdn/conf/node_config.conf # 重启服务生效 systemctl restart ws_config_client.service3. 卸载被控节点 systemctl stop ws_config_client.service systemctl disable ws_config_client.service rm -rf /root/start.sh /opt/gincdn /etc/systemd/system/ws_config_client.service systemctl daemon-reload五、常见问题解决方案 1. 脚本下载失败 解决方案:命令已强制使用HTTP1.1协议,重新执行一键部署命令即可 2. 解压失败(unzip: command not found) apt install -y unzip3. 服务启动失败 systemctl daemon-reload systemctl restart ws_config_client.service教程总结 GinCdn V1.0.4被控节点仅需1条命令即可完成部署,适配Ubuntu全版本 核心流程:执行一键命令 → 输入主控地址 → 验证服务状态 部署完成后,服务自动配置开机自启,无需手动干预