RSA(攻防世界)Rsa256 -- cr4-poor-rsa
RSA256
【攻防世界】 题目链接 【RSA256】

下载附件得到两个文件。 猜测第一个 txt 文件 可能为RSA加密密文 ,第二个估计就是密钥。依次打开看看:

果然如此。
目标: 寻找 n、e、q、p
利用 openssl 查看 e
打开 kali ,利用 openssl 工具
输入以下命令:
openssl rsa -pubin -text -modulus -in gy.key

得到: e: 65537 (0x10001)
常见 openssl rsa 命令 如下:
openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]
-in filename:指明私钥文件
-out filename:指明将提取出的公钥保存至指定文件中
-pubout:根据私钥提取出公钥
例子:已知私钥,利用openssl 工具破解密文。
如题 : 【攻防世界】就在其中
openssl rsautl -decrypt -in key.txt -inkey psa.key -out flag.txt
密文: key.txt
私钥:psa.key
破解保存到 flag.txt
十六进制转换得到 n
注意到上一步骤中,得到了:
Modulus=A9BD4C7A7763370A042FE6BEC7DDC841602DB942C7A362D1B5D372A4D08912D9
Modulus的值目前是十六进制,需转化为十进制:

得到 n:76775333340223961139427050707840417811156978085146970312315886671546666259161
利用 n来分解得到 p、q
已知 n = 76775333340223961139427050707840417811156978085146970312315886671546666259161
利用 在线分解素数网站

得到
p = 273821108020968288372911424519201044333
q = 280385007186315115828483000867559983517
跑脚本出flag
至于跑脚本的库的提前准备,可参考我 之前一篇博客中的环境准备 。
#coding:utf-8
import gmpy2
import rsa
p = 273821108020968288372911424519201044333
q = 280385007186315115828483000867559983517
n = 76775333340223961139427050707840417811156978085146970312315886671546666259161
e = 65537
d = int(gmpy2.invert(e,(p-1)*(q-1)))
privatekey = rsa.PrivateKey(n,e,d,p,q)
with open("E:\\fllllllag.txt","rb") as f:
print(rsa.decrypt(f.read(),privatekey).decode())

flag{_2o!9_CTF_ECUN_}
记得去掉 _ 真正的flag为:
flag{2o!9CTFECUN}
【参考题解】 戳这里
cr4-poor-rsa
【攻防世界】 题目链接 【cr4-poor-rsa】
下载附件,解压得到如下两个文件:

【注意】显然在第一个文件中,flag经过base64加密,跑脚本时要记得给其解密:
利用 openssl来查看 key.pub
openssl rsa -pubin -text -modulus -in key.pub

得到 :
e = 65537
n = 52A99E249EE7CF3C0CBF963A009661772BC9CDF6E1E3FBFC6E44A07A5E0F894457A9F81C3AE132AC5683D35B28BA5C324243
= 833810193564967701912362955539789451139872863794534923259743419423089229206473091408403560311191545764221310666338878019
分解大数n,得到p、q

p = 863653476616376575308866344984576466644942572246900013156919
q = 965445304326998194798282228842484732438457170595999523426901
脚本拿flag
修改一下上题脚本:
#coding:utf-8
import gmpy2
import rsa
from base64 import b64decode
p = 863653476616376575308866344984576466644942572246900013156919
q = 965445304326998194798282228842484732438457170595999523426901
n = 833810193564967701912362955539789451139872863794534923259743419423089229206473091408403560311191545764221310666338878019
e = 65537
d = int(gmpy2.invert(e,(p-1)*(q-1)))
privatekey = rsa.PrivateKey(n,e,d,p,q)
with open("E:\\flag.b64","rb") as f:
str = b64decode(f.read())
print(rsa.decrypt(str,privatekey).decode())

拿到flag!
ALEXCTF{SMALL_PRIMES_ARE_BAD}
结语 - (enc)flag格式
顺便提一句,像上面的格式有 _ 的存在。因此在考虑flag格式的时候,可以优先考虑一下:
比如 【攻防世界】 的 enc 最终解密得到 ALEXCTFTH15O1SO5UP3RO5ECR3TOTXT
但是真正flag格式 为: (将O更换为 _ )
ALEXCTF{TH15_1S_5UP3R_5ECR3T_TXT}
【侵权删】
【转载请放链接】 https://www.cnblogs.com/Jlay/p/Rsa_openssl.html
RSA(攻防世界)Rsa256 -- cr4-poor-rsa的更多相关文章
- RSA脚本环境配置-攻防世界-OldDriver
[Crypto] 题目链接 [RSA算法解密] 审题分析 首先拿到一个压缩包,解压得到文件enc.txt. 先不用去管其他,第一眼enc马上联想到 RSA解密.接着往下看 [{"c" ...
- CTF--web 攻防世界web题 robots backup
攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...
- CTF--web 攻防世界web题 get_post
攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...
- RSA算法原理——(3)RSA加解密过程及公式论证
上期(RSA简介及基础数论知识)为大家介绍了:互质.欧拉函数.欧拉定理.模反元素 这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的回顾一遍. 一.目前常见加密算法简介 ...
- rsa字符串格式公钥转换python rsa库可识别的公钥形式
在爬虫分析的时候,经常在网页上看到如下格式的rsa公钥: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21 ...
- php/js/linux: js加密(rsa公钥加密) php解密(rsa私钥解密)
php/js/linux: js加密(rsa公钥加密) php解密(rsa私钥解密) 一: js rsa 插件 https://github.com/UFO0001/WX_RSA 或者: https: ...
- 攻防世界 web进阶练习 NewsCenter
攻防世界 web进阶练习 NewsCenter 题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...
- 【攻防世界】高手进阶 pwn200 WP
题目链接 PWN200 题目和JarvisOJ level4很像 检查保护 利用checksec --file pwn200可以看到开启了NX防护 静态反编译结构 Main函数反编译结果如下 int ...
- Delphi RSA加解密【 (RSA公钥加密,私钥解密)、(RSA私钥加密,公钥解密)、MD5加密、SHA加密】
作者QQ:(648437169) 点击下载➨delphi RSA加解密 [Delphi RSA加解密]支持 (RSA公钥加密,私钥解密).(RSA私钥加密,公钥解密).MD5加密.SHA1加密.SHA ...
随机推荐
- vue知识点10
今天彻底掌握了如下: 1.解决回调地狱三种方案 callback async await Promise 2.中间件(middleware) express.static ...
- 《JavaScript高级程序设计》——第四章 变量、作用域和内存管理
JavaScript变量可以用保存两种类型的值:基本类型值和引用类型值.基本类型的值源自以下基本类型数据:Undefined.Null.Boolean.Number和String. 从一个变量向另一个 ...
- AWS Lambda 借助 Serverless Framework,迅速起飞
前言 微服务架构有别于传统的单体式应用方案,我们可将单体应用拆分成多个核心功能.每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作时不会互相影响 这种设计理念被进一步应用,就变成了无 ...
- MongoDB用户,角色管理 --- MongoDB基础用法(三)
用户管理 用户创建 MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问. 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作. 用户应该只有最小权限集才 ...
- puk1521 赫夫曼树编码
Description An entropy encoder is a data encoding method that achieves lossless data compression by ...
- 【总结】java基础
一.基础语法 1.数据类型 (1)基本数据类型:byte(1字节,-27~27-1),short(2字节,-215~215-1),int(4字节,-231~231-1),long(8字节,-263~2 ...
- PHP 将数组转换为JSON字符串<兼容中文>
1 /************************************************************** 2 * 3 * 使用特定function对数组中所有元素做处理 4 ...
- python解决百钱买百鸡
百钱买百鸡 关注公众号"轻松学编程"了解更多. 现有100钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只 要求:公鸡.母鸡,小鸡都要有,把100文钱花完,买的鸡的数量正好是10 ...
- [Luogu P1613]跑路 (DP+倍增+最短路)
题面 传送门:https://www.luogu.org/problemnew/show/P1613 Solution 挺有意思的一道题. 题面已经挺明显的描述出了这题的主要思想:倍增. 先这样想,我 ...
- 「APIO2015」巴邻旁之桥 Palembang Bridges
贪心 先转化一下题意 首先如果一个人的家和办公室在河同一侧那么建桥的时候不用去考虑它,最终把答案加上即可 在河两侧的家和办公室互换不影响答案,那么可以把这个抽象到一个区间$[l,r]$,距离就是$|l ...