攻防世界---->SignIn

news2024/10/2 11:20:22

做题笔记。

下载 查壳。

64ida打开。

先运行一下程序:

那么,我们可以直接查找字符串看看,锁定位置。

### 纠正一下:应该是 n 值 不是d值 n = p*q 。。。### 

### v6的值 应该就是 我们func(input,49) 进行加密后的值。

(猜测的,毕竟逆向三分逆,七分猜测。。)

通过分析可以得到两个信息:

一        输入进行了加密。

二        进行了RSA加密。

那么,根据已知信息,这是通过 已知 C、e、n 去求m

所以。分两步:

一        对n进行因式分解:

二        将密文从 hex 进行变成 dec (保持单位统一):

总结已知信息:

对于,这种,使用C语言肯定不行的。用python去实现:

脚本:(前面的是我做的归类总结>>>此题在最后。)

关键库:

// import gmpy2---->实现RSA
// import binascii---->将RSA结果转成字符。
import gmpy2

"""
n=p*q       ->>>若n未知
import gmpy2
①invert(e,φ(N))  <<可以得到<<   L = (p-1)*(q-1)     d=gmpy2.invert(e,L)     求逆元快速算出来:invert(e,φ(N)) 求出d值。

②求明文m 或者 密文根据公式  密文 = 明文^e mod N     明文=密文^D mod N
明文: m
m=gmpy2.powmod(c,d,n)
密文: c
c=gmpy2.powmod(m,d,n)

③dq、dp 是私钥的参数之一,分别表示d模p-1和d模q-1的余数的逆元。

注意!!! dp和dq,他俩加上e、n和密文c全部已知的话是可以实现任意密文c解密

dp=d mod(p-1) dq=d mod(q-1) 即 dp=d % (p-1)  dq=d % (q-1) 

(当p\\q\\dp\\dq\\c/m已知的时候 密文一样 套用RSA原理。)
I = gmpy2.invert(q,p)
mp = pow(c,dp,p)               #求幂取模运算, mp = c^dp % p
mq = pow(c,dq,q)               #求幂取模运算, mq = c^dp % q
m = (((mp-mq)*I)%p)*q+mq       #求明文公式
"""

import binascii

"""
import binascii   # ->>>对于需要将进制转化成ASCII码显示时使用。
print(binascii.unhexlify(hex(m)[2:]).decode(encoding="utf-8")) 将数据变成字符串。(不行说明其本身没有对应的ASCII,也就是不需要转。直接上flag)

例子:
DEC 185534734614696481020381637136165435809958101675798337848243069
suctf{Pwn_@_hundred_years} ->>>正常输出。

5577446633554466577768879988 ->>>使用会报错。
"""

# 本题:
n = 103461035900816914121390101299049044413950405173712170434161686539878160984549
p = 282164587459512124844245113950593348271
q = 366669102002966856876605669837014229419

c = 78510953323073667749065685964447569045476327122134491251061064910992472210485

e = 65537

L = (p - 1) * (q - 1)
d = gmpy2.invert(e, L)
print(d)
m=gmpy2.powmod(c,d,n)
print(m)
print(binascii.unhexlify(hex(m)[2:]).decode(encoding="utf-8"))

suctf{Pwn_@_hundred_years}

题外话:

做到这里就可以提交了。。。 我还以为需要将其转成字符,在和key运算 还原输入。。

看来不用,大可能是我没有彻底理解…… 继续加油!

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

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

相关文章

《向量数据库指南》——非结构化数据挑战升级:如何高效导入向量数据库?

哈哈,说到 AI 应用中的非结构化数据处理,这可真是个让人又爱又恨的话题啊!今天呢,咱就聊聊这个话题,尤其是那个让人头疼的如何将各种数据源和格式的非结构化数据导入向量数据库的问题。 非结构化数据处理:挑战与复杂性 在 AI 应用领域,非结构化数据无处不在,从社交媒…

【递归】11. leetcode 129 求根节点到叶节点数字之和

1 题目描述 题目链接&#xff1a; 求根节点到叶节点数字之和 2 解答思路 第一步&#xff1a;挖掘出相同的子问题 &#xff08;关系到具体函数头的设计&#xff09; 第二步&#xff1a;只关心具体子问题做了什么 &#xff08;关系到具体函数体怎么写&#xff0c;是一个宏观…

Vue3实现动态菜单功能

文章目录 0.效果演示1.搭建Vue3项目1.1 vite 脚手架创建 Vue3 项目1.2 设置文件别名1.3 安装配置 element-plus1.4 安装配置路由2.登录页面3.后台管理页面3.1 搭建后台框架3.2 左侧菜单栏3.3 header 用户信息3.4 主要内容3.5 footer4.配置静态路由5.记录激活菜单5.1 el-menu 绑…

解析双亲委派机制源码

剖析ClassLoader源码&#xff0c;理解双亲委派机制 双亲委派机制是Java的类加载器在处理加载类的任务时的一种分配机制&#xff0c;可以防止类被重复加载或者出现手写类代替系统类的风险&#xff0c;上篇已经全面介绍了双亲委派机制&#xff0c;本篇我们从ClassLoader抽象类的源…

Ubuntu22.04之测试两个IP地址的网速(二百七十一)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

微信小程序操作蓝牙

主要流程&#xff1a; 1.初始化蓝牙适配器openBluetoothAdapter&#xff0c;如果不成功就onBluetoothAdapterStateChange监听蓝牙适配器状态变化事件 2.startBluetoothDevicesDiscovery开始搜寻附近的蓝牙外围设备 3.onBluetoothDeviceFound监听寻找到新设备的事件&#xff0c;…

制造业该如何应用大数据?

​收到一位朋友私信&#xff0c;提问“制造业该如何应用大数据”&#xff1f;我觉得这个问题非常好&#xff0c;而且这也将是未来机械专业领域的一个重要突破口。 而传统制造企业与计算机、互联网行业的最佳结合点就在这里。 如果你没有真正的去实施过一个企业的信息化项目&a…

【重学 MySQL】四十五、数据库的创建、修改与删除

【重学 MySQL】四十五、数据库的创建、修改与删除 一条数据存储的过程数据输入数据验证数据处理数据存储数据持久化反馈与日志注意事项 标识符命名规则基本规则长度限制保留字与特殊字符命名建议示例 MySQL 中的数据类型创建数据库创建数据库时指定字符集和排序规则 查看数据库…

[Linux]开发环境搭建

RPM和YUM 安装JDK 安装Tomcat 安装IDEA 安装MySql

代码随想录算法训练营Day20 | 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

目录 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点 235. 二叉搜索树的最近公共祖先 题目 235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先…

Yocto - 使用Yocto开发嵌入式Linux系统_05 认识Bitbake工具

Meeting the BitBake Tool 通过本章&#xff0c;我们将开始学习 Yocto 项目引擎如何在幕后工作的旅程。正如每一段旅程一样&#xff0c;沟通是至关重要的&#xff0c;因此我们需要理解 Yocto 项目工具所使用的语言&#xff0c;并学习如何充分利用这些工具来实现我们的目标。 Wi…

网页前端开发之Javascript入门篇(3/9):条件控制

Javascript条件控制 什么是条件控制&#xff1f; 答&#xff1a;其概念跟 Python教程 介绍的一样&#xff0c;只是语法上有所变化。 参考流程图如下&#xff1a; 其对应语法&#xff1a; var button false; // 开关状态 console.log("检查开关.."); if(bu…

一文掌握Harbor镜像同步公有云镜像仓库实践

一文掌握Harbor镜像同步公有云镜像仓库实践 目录 1 引言2 概念 2.1 Harbor2.2 阿里云的镜像仓库ACR2.3 华为云的镜像仓库SWR2.4 Harbor复制管理同步镜像 2.4.1 复制管理的工作原理 2.5 Harbor同步镜像到公有云镜像仓库的优势 3 实验&#xff1a;通过Harbor 将容器镜像同步到公…

刷题系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;知识点管理&#xff0c;科目类型管理&#xff0c;试题管理&#xff0c;试卷管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;我的 开发系统&#…

vulnhub-W34kn3ss 1靶机

vulnhub&#xff1a;https://www.vulnhub.com/entry/w34kn3ss-1,270/ 导入靶机&#xff0c;扫描 靶机开在192.168.81.7.扫描端口 扫到三个端口&#xff0c;存在网站服务&#xff0c;访问 80端口没什么东西&#xff0c;443似乎访问到的是同一个界面&#xff0c;这种情况下一般是…

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误 前言一、WinRiver II 测量项目 MMT 文件的结构二、WinRiver II 无法打开或操作测量项目 MMT 文件2.1 无法载入船测多线法测量文件2.2 可以载入测验项目 MMT 文件&#xff0c;但 ADCP 后处理软件无法写入信息2.3…

基于SpringBoot+vue的监理公司信息化管理系统设计与实现

目录 1. 系统概述 2. 技术选型 3. 系统模块设计 3.1 收入支出管理 3.2 合同管理 3.3 财务统计 3.4 甲方乙方公告 4. 安全性考虑 5. 效果展示和示例代码 6. 总结 1. 系统概述 随着经济的快速发展和社会的进步&#xff0c;建筑行业作为国民经济的重要支柱产业之…

[MAUI]数据绑定和MVVM:MVVM的属性验证

一、MVVM的属性验证案例 Toolkit.Mvvm框架中的ObservableValidator类,提供了属性验证功能,可以使用我们熟悉的验证特性对属性的值进行验证,并将错误属性提取和反馈给UI层。以下案例实现对UI层的姓名和年龄两个输入框,进行表单提交验证。实现效果如下所示 View<ContentP…

医院体检管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;体检分类管理&#xff0c;体检套餐管理&#xff0c;体检预约管理&#xff0c;体检报告管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;体检套餐&a…

Jetson 开发系列:Orin Nano 开箱!一款强大的嵌入式物联网开发板

边缘计算作为 AI 的一个重要应用场景&#xff0c;面临着前所未有的机遇与挑战。 谈及 AI&#xff0c;自然绕不开 NVIDIA 的产品&#xff1a; 其中&#xff0c;Jetson 系列均为 AIoT 设备打造&#xff0c;功耗低是其最大的特点。以我手头的 Jetson Ori Nano 为例&#xff0c;满…