[SWPUCTF 2021 新生赛]crypto9
[MoeCTF 2021]Web安全入门指北—GET

意思是GET传参,moe=flag 就可以得到falg
输入?moe=flag

flag为:
NSSCTF{ff26110b-8793-403c-990e-15c7f1820596}
[SWPUCTF 2021 新生赛]crypto9
#gpt写的代码
from itertools import product
letter_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # 字母表# 根据输入的key生成key列表
def Get_KeyList(key):key_list = []for ch in key:key_list.append(ord(ch.upper()) - 65)return key_list# 加密函数
def Encrypt(plaintext, key_list):ciphertext = ""i = 0for ch in plaintext: # 遍历明文if 0 == i % len(key_list):i = 0if ch.isalpha(): # 明文是否为字母,如果是,则判断大小写,分别进行加密if ch.isupper():ciphertext += letter_list[(ord(ch) - 65 + key_list[i]) % 26]i += 1else:ciphertext += letter_list[(ord(ch) - 97 + key_list[i]) % 26].lower()i += 1else: # 如果密文不为字母,直接添加到密文字符串里ciphertext += chreturn ciphertext# 解密函数
def Decrypt(ciphertext, key):plaintext = ""i = 0for ch in ciphertext: # 遍历密文if 0 == i % len(key):i = 0if ch.isalpha(): # 密文为否为字母,如果是,则判断大小写,分别进行解密if ch.isupper():plaintext += letter_list[(ord(ch) - 65 - key[i]) % 26]i += 1else:plaintext += letter_list[(ord(ch) - 97 - key[i]) % 26].lower()i += 1else: # 如果密文不为字母,直接添加到明文字符串里plaintext += chreturn plaintextif __name__ == '__main__':print("请输入密文:")ciphertext = 'AKKPLX{qv5x0021-7n8w-wr05-x25w-7882ntu5q984}'# 穷举密钥组合进行解密for key in product(letter_list, repeat=3):key_list = Get_KeyList("".join(key))plaintext = Decrypt(ciphertext, key_list)print("密钥: %s,明文: %s" % ("".join(key), plaintext))

位移13位用凯撒密码解密得到flag

NSSCTF{dd5f0021-7a8e-ee05-f25e-7882abc5d984}
[鹤城杯 2021]Crazy_Rsa_Tech
源代码
from Crypto.Util.number import * # 导入PyCryptodome库中的number模块,用于生成大素数等操作
from Crypto.Util.Padding import * # 导入PyCryptodome库中的Padding模块,用于数据填充# 将字符串 "flag{??????}" 转换为字节串,然后进行填充(使其长度为64字节),最后转换为一个大整数
FLAG = bytes_to_long(pad(b"flag{??????}", 64))def init_key():"""初始化RSA密钥对。:return: RSA模数n、公钥指数e、私钥指数d"""p, q = getPrime(512), getPrime(512) # 生成两个512位的素数p和qn = p * q # 计算RSA模数ne = 9 # 设置公钥指数e为9while GCD((p - 1) * (q - 1), e) != 1: # 确保(p-1)*(q-1)与e互质p, q = getPrime(512), getPrime(512) # 如果不互质,重新生成p和qn = p * q # 重新计算RSA模数nd = inverse(e, (p - 1) * (q - 1)) # 计算私钥指数d,使得e*d ≡ 1 (mod (p-1)*(q-1))return n, e, d # 返回模数n、公钥指数e和私钥指数dn_list = list() # 存储生成的模数
c_list = list() # 存储加密后的密文
for i in range(9): # 循环9次,每次生成一个新的RSA密钥对N, e, d = init_key() # 调用init_key函数生成新的RSA密钥对n_list.append(N) # 将生成的模数添加到n_list中c = pow(FLAG, e, N) # 使用公钥指数e对FLAG进行加密,得到密文cc_list.append(c) # 将密文c添加到c_list中assert pow(c, d, N) == FLAG # 验证解密后的结果是否与原始的FLAG相同
print("n_list:", n_list) # 输出所有生成的模数
print("c_list:", c_list) # 输出所有生成的密文
最终得到n_list、c_list 这两个在output.txt文件中
攻击代码:
from Crypto.Util import number # 导入PyCryptodome库中的number模块,用于生成大素数等操作
from gmpy2 import iroot, invert # 导入gmpy2库中的iroot和invert函数,用于计算整数的根和求逆元# 定义常量
n_list = [ 71189786319102608575263218254922479901008514616376166401353025325668690465852130559783959409002115897148828732231478529655075366072137059589917001875303598680931962384468363842379833044123189276199264340224973914079447846845897807085694711541719515881377391200011269924562049643835131619086349617062034608799 ] # 省略了具体的数值列表,这里应该是一组模数
c_list = [ 62580922178008480377006528793506649089253164524883696044759651305970802215270721223149734532870729533611357047595181907404222690394917605617029675103788705320032707977225447998111744887898039756375876685711148857676502670812333076878964148863713993853526715855758799502735753454247721711366497722251078739585 ] # 省略了具体的数值列表,这里应该是对应的密文
e = 9 # RSA公钥指数# 定义中国剩余定理(CRT)函数
def crt(n_list, c_list):"""使用中国剩余定理将多个同余方程组合成一个同余方程。:param n_list: 一组模数:param c_list: 对应的密文:return: 组合后的同余方程的结果"""n = 1for i in n_list:n *= i # 计算所有模数的乘积N = []for i in n_list:N.append(n // i) # 计算每个模数的伪逆元t = []for i in range(len(n_list)):t.append(invert(N[i], n_list[i])) # 计算每个模数的逆元summary = 0for i in range(len(n_list)):summary = (summary + c_list[i] * t[i] * N[i]) % n # 组合成一个新的同余方程return summary# 使用CRT函数计算组合后的同余方程的结果
M = crt(n_list, c_list)# 计算M^(1/e),即解密后的明文
m = iroot(M, e)[0]# 将解密后的明文转换为字节串并打印出来
flag = long_to_bytes(m)
print(flag)
得到flag

NSSCTF{H0w_Fun_13_HAstads_broadca5t_AtTack!}
相关文章:
[SWPUCTF 2021 新生赛]crypto9
[MoeCTF 2021]Web安全入门指北—GET 意思是GET传参,moeflag 就可以得到falg 输入?moeflag flag为: NSSCTF{ff26110b-8793-403c-990e-15c7f1820596} [SWPUCTF 2021 新生赛]crypto9 #gpt写的代码 from itertools import product letter_list ABCDEFG…...
vue中常用的指令
v - if 指令 功能详细解释 它是一种真正的条件渲染指令。在 Vue 实例初始化以及数据更新过程中,Vue.js 会对v - if指令中的表达式进行求值。这个表达式可以是简单的布尔变量,也可以是一个复杂的计算表达式,只要最终结果是布尔值就行。当表达式…...
Docker Compose实战三:轻松部署PHP
通过前面的文章(Docker Compose基础语法与MySQL部署),你已经掌握了Docker Compose的基本语法和常用指令,并成功部署了一个MySQL数据库服务器。今天,我们将继续深入探索Docker Compose的强大功能,介绍如何使…...
数据分析实战—房价特征关系
1.实战内容 (1) 读取房价特征关系表(house_price.npz)绘制离地铁站的距离与单位面积的房价的散点图,并对其进行分析; import pandas as pd import numpy as np import warnings warnings.filterwarnings(&…...
云和恩墨 zCloud 与华为云 GaussDB 完成兼容性互认证
近日,云和恩墨(北京)信息技术有限公司(以下简称:云和恩墨)的多元数据库智能管理平台 zCloud 与华为云计算技术有限公司(以下简称:华为云)的 GaussDB 数据库完成了兼容性互…...
【大语言模型LangChain】 ModelsIO OutputParsers详解
【大语言模型LangChain】 ModelsIO OutputParsers详解 一、简介二、OutputParsers 的优势三、解析器类型四、实战示例1、String 解析器2、Json 解析器3、Pydantic 解析器4、结构化输出解析器5、OpenAI 函数输出解析器5.1、JsonOutputFunctionsParser5.2、JsonKeyOutputFunction…...
PaddleSpeech本地部署文档
windows安装paddlespeech步骤: 1. 安装vs c编译环境 对于 Windows 系统,需要安装 Visual Studio 来完成 C 编译环境的安装。 Microsoft C Build Tools - Visual Studio 2. 安装conda conda create -y -p paddlespeech python3.8 conda activate pad…...
Android 第三方框架:RxJava:源码分析:责任链模式
文章目录 责任链模式RxJava中的责任链总结 责任链模式 RxJava中的责任链 链式调用的使用过程中形成了两个单向链表 第一个单向链表是Observable链表 它的形成过程: 1.首先调用Observable的静态方法创建第一个Observable对象,作为Observable链表的表…...
网络安全 与 加密算法
计算机中的网络安全 在本篇中介绍了以下几个方面: 机密性 密码学 对称加密算法(DES, 3DES, AES) 公开秘钥算法 RSA大素数的获取 完整性 散列函数(MD5, SHA-1, 并没有提及算法实现) 报文鉴别(MAC) 数字签名 端点鉴别 应用 SSL(TCP网络安全) 运行时安全 防火墙的基本知识 …...
UE4_贴花_贴花基础知识二
五、多表面投射 在本示例中,你将了解贴花如何在多个表面上进行投射。请注意,如果表面朝向与投射方向较为平行,贴花投射时必然会产生一些拉伸。另外,请记住,贴花可以在包括骨骼网格体在内的静态和动态网格体上进行投射。…...
ElasticSearch 搜索、排序、分页功能
一、DSL 查询文档 ElasticSearch 的查询依然是基于 json 风格的 DSL 来实现的。 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.15/query-dsl.html 1.1 DSL 查询分类 常见的查询类型包括: 查询所有:查询出所有数…...
MySQL-9.1.0 实现最基础的主从复制
目录 1 实验介绍 2 实验准备 2.1 创建目录为MySQL挂载使用 2.2 编写 docker-compose.yml 文件 2.3 启动容器 3 主从复制操作 3.1 MASTER 操作指令 3.2 SLAVE1 操作指令 3.3 SLAVE2 操作指令 4 验证是否实现主从 4.1 导入sql脚本查看是否正常主从复制 4.2 检验从库是否看见复制…...
Java中的“泛型“
泛型(Generics)是Java中的一种重要特性,它允许在定义类、接口和方法时使用类型参数(type parameters)。泛型的主要目的是提高代码的类型安全性和重用性。下面我将详细讲解Java中的泛型。 1. 泛型的基本概念 泛型允许我…...
前端(五)css属性
css属性 文章目录 css属性一、字体属性二、文本属性三、背景属性四、盒子模型 一、字体属性 font-weight:文字粗细,在100到900之间,normal(400),bord(700),inherit(继承父类) font-style:文字风格,normal表示正常(默认…...
总结拓展十七:SAP 采购订单行项目“交货“页签解析
《 SAP采购订单行项目“交货”页签字段解析》 在 SAP 系统的采购流程中,采购订单行项目的“交货”页签承载着关键的信息,其中的字段更是对整个交货环节的精准描述和把控的重要元素。理解和正确解析这些字段,对于确保采购流程的顺利进行、优化…...
分布式日志系统设计
一、分布式日志系统定义 分布式日志系统是一种用于收集、存储和分析大规模分布式系统日志的系统。它可以帮助开发人员和系统管理员实时监控和调试系统,提高系统可靠性和可用性,同时也可以用于日志分析和故障排查。 二、简单设计思路 日志收集ÿ…...
DApp开发如何平衡性能与去中心化?
DApp的核心价值在于信任、透明和去中心化,但这些特点往往伴随着性能的瓶颈和高成本。在DApp开发中,如何在保证去中心化的前提下提升性能,成为开发者面临的重要挑战。如何实现性能与去中心化的平衡是一个重要课题。 一、为什么去中心化影响性…...
RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10
目录 前言 一、Qt5WebEngine简介 二、Qt5WebEngine编译 总结 前言 Rockchip RK3588是一款强大的多核处理器,广泛应用于边缘计算、人工智能、嵌入式系统等领域。为了在RK3588上运行自定义的Linux系统,并使用Qt5WebEngine进行Web内容渲染,Buildroot是一个非常合适的工具。本…...
2024年12月GESPC++三级真题解析
一、单选题(每题2分,共30分) 题目123456789101112131415答案 B D A A D B C A A D D C D C A 1.下列二进制表示的十进制数值分别是( )[10000011]原( ) [10000011]补ÿ…...
vue-router路由传参的两种方式(params 和 query )
一、vue-router路由传参问题 1、概念: A、vue 路由传参的使用场景一般应用在父路由跳转到子路由时,携带参数跳转。 B、传参方式可划分为 params 传参和 query 传参; C、而 params 传参又可分为在 url 中显示参数和不显示参数两种方式&#x…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
