HackTheBox-RSAisEasy
文章目录
- 概述
- 题目
- 解题思路
- 解题代码
概述
HackTheBox 网站CTF靶场密码学相关题目RSAisEasy,题目地址https://app.hackthebox.eu/challenges/rsaiseasy,主要考点为RSA模不互素的攻击。
题目
下载附件并解压缩得到output.txt和RSAisEasy.py
output.txt内容为
n1: 101302608234750530215072272904674037076286246679691423280860345380727387460347553585319149306846617895151397345134725469568034944362725840889803514170441153452816738520513986621545456486260186057658467757935510362350710672577390455772286945685838373154626020209228183673388592030449624410459900543470481715269
c1: 92506893588979548794790672542461288412902813248116064711808481112865246689691740816363092933206841082369015763989265012104504500670878633324061404374817814507356553697459987468562146726510492528932139036063681327547916073034377647100888763559498314765496171327071015998871821569774481702484239056959316014064
c2: 46096854429474193473315622000700040188659289972305530955007054362815555622172000229584906225161285873027049199121215251038480738839915061587734141659589689176363962259066462128434796823277974789556411556028716349578708536050061871052948425521408788256153194537438422533790942307426802114531079426322801866673
(n1 * E) + n2: 601613204734044874510382122719388369424704454445440856955212747733856646787417730534645761871794607755794569926160226856377491672497901427125762773794612714954548970049734347216746397532291215057264241745928752782099454036635249993278807842576939476615587990343335792606509594080976599605315657632227121700808996847129758656266941422227113386647519604149159248887809688029519252391934671647670787874483702292498358573950359909165677642135389614863992438265717898239252246163
RSAisEasy.py的内容为
#!/usr/bin/env python3
from Crypto.Util.number import bytes_to_long, getPrime
from secrets import flag1, flag2
from os import urandomflag1 = bytes_to_long(flag1)
flag2 = bytes_to_long(flag2)p, q, z = [getPrime(512) for i in range(3)]e = 0x10001n1 = p * q
n2 = q * zc1 = pow(flag1, e, n1)
c2 = pow(flag2, e, n2)E = bytes_to_long(urandom(69))print(f'n1: {n1}')
print(f'c1: {c1}')
print(f'c2: {c2}')
print(f'(n1 * E) + n2: {n1 * E + n2}')
其中getPrime()
的意思是
即得到1个512 bit的质数
解题思路
通过查看代码,n1 = p * q
,n2 = q * z
,则他们有相同的公约数q
,可知模不互素,由代码和output.txt可知:
n1 = p * q
sum = n1 * e + n2 = p * q * e + q * z = q * (p * e + z)
- 通过
gmpy2.gcd(n1,sum)
得到公约数q的值,p = n1 / q
- 而
n2 = sum % n1
,这是关键的一步,注意p,q,z为512bit的限制 z = n2 / q
解题代码
import gmpy2
from Crypto.Util.number import long_to_bytes # n1 = p * q
n1 = 101302608234750530215072272904674037076286246679691423280860345380727387460347553585319149306846617895151397345134725469568034944362725840889803514170441153452816738520513986621545456486260186057658467757935510362350710672577390455772286945685838373154626020209228183673388592030449624410459900543470481715269c1 = 92506893588979548794790672542461288412902813248116064711808481112865246689691740816363092933206841082369015763989265012104504500670878633324061404374817814507356553697459987468562146726510492528932139036063681327547916073034377647100888763559498314765496171327071015998871821569774481702484239056959316014064c2 = 46096854429474193473315622000700040188659289972305530955007054362815555622172000229584906225161285873027049199121215251038480738839915061587734141659589689176363962259066462128434796823277974789556411556028716349578708536050061871052948425521408788256153194537438422533790942307426802114531079426322801866673e = int('0x10001',16)# sum = (n1 * e) + n2 = p * q * e + q * z = q * (p * e + z)
sum = 601613204734044874510382122719388369424704454445440856955212747733856646787417730534645761871794607755794569926160226856377491672497901427125762773794612714954548970049734347216746397532291215057264241745928752782099454036635249993278807842576939476615587990343335792606509594080976599605315657632227121700808996847129758656266941422227113386647519604149159248887809688029519252391934671647670787874483702292498358573950359909165677642135389614863992438265717898239252246163# 关键的一步
n2 = sum % n1# 求公约数q
q = gmpy2.gcd(n1, sum)
assert (q != 1)
p = n1 / q
z = n2 / q d1 = gmpy2.invert(e, (q - 1) * (p - 1))
d2 = gmpy2.invert(e, (q - 1) * (z - 1))
m1 = pow(c1, d1, n1)
m2 = pow(c2, d2, n2)
print long_to_bytes(m1) + long_to_bytes(m2)
HackTheBox-RSAisEasy相关推荐
- sqlmap md5怎么解密_三十九,hackthebox渗透之DirBuster扫描路径及Sqlmap
一.DirBuster扫描目录 hack the box是一个在线Web渗透实验平台,能帮助你提升渗透测试技能和黑盒测试技能,平台上有很多靶机,从易到难,各个级别的靶机都有.因为这些靶机放在平台上供大 ...
- Hackthebox(1)系列持续更新
Hackthebox第一关 文章目录 Hackthebox第一关 一.Hackthebox配置openvpn 配置openvpn 二.第0层(简单) 终端弄好以后点击产卵机,然后会给你创建一个实例 问 ...
- HackTheBox MetaTwo 网站框架CVE获取用户shell和破解私钥提权
题目网址: https://app.hackthebox.com/machines/MetaTwo 枚举 使用nmap枚举靶机 nmap -sC -sV -p- 10.10.11.186 扫到了域名, ...
- HackTheBox 如何使用
如何开始? 1.到官网注册一个账号 https://www.hackthebox.com/ 2.验证自己的邮箱 3.下载 openvpn 4.到左边的 labs 实验室开始学习或直接点击 start ...
- HackTheBox –Craft实战
HackTheBox –Craft ip:http://10.10.10.110/ 信息搜集 端口扫描:使用nmap扫描发现开了22(ssh)端口和443(http/ssl) 版本可从web网页上获取 ...
- CTF-Anubis HackTheBox 渗透测试(二)
大家好,我是你们好朋友小峰.预计从今天开始,陆陆续续为大家推出 CTF-Horizontall HackTheBox 系列文章. 0x01 简介 Anubis是由作者4ndr34z在Hac ...
- Hackthebox:Arctic Walkthrough
预备知识 使用了msfvenom,不想看的可以跳过 浏览器信息收集尤其是细节发现服务信息不能过度依赖工具 MS10-059.smbserver.jsp reverse shell 信息收集和获取立足点 ...
- hackthebox的网站使用教程
Google浏览器下载 下载url:https://www.google.cn/chrome/ hackthebox网站 网站url:https://www.hackthebox.com/home 获 ...
- 小黑客,2020还没有邀请码注册 hackthebox ?reCAPTCHA验证码加载不出来?
访问邀请码页面 https://www.hackthebox.eu/invite F12控制台输入 $.post('https://www.hackthebox.eu/api/invite/gener ...
- [Hackthebox]获取社区邀请码
获取Hackthebox邀请码教程 登录社区首页后,下拉页面,点击Join按钮进入邀请页面.我们需要通过该页面展示的信息,获取邀请码以注册社区账号.这是进入训练社区的一个小挑战. 流程 可以直接通过浏 ...
最新文章
- 语句覆盖(Statement coverage)
- Python 运行 Python hello.py 出错,提示: File stdin , line 1
- 安装终端服务和终端服务授权,激活终端服务授权
- [C++11]lambda表达式语法
- NOI数学:莫比乌斯变换
- 分支语句复习 java 9018
- stm32可以移植linux系统吗,如何在STM32上移植Linux?超详细的实操经验分享
- 区块链,到底是美好未来还是题材炒作?
- 计算机专业教学实施,中职计算机专业教学项目的设计与实施
- Ubuntu、SUSE的发音
- jsp+mysql校园卡管理系统设计与实现
- 银行卡号与开户行对照文档
- 现在卖什么赚钱?看看你适合哪种赚钱方式!
- blender建模小试
- python爬取苏宁易购--jsonpath方法
- 首发:最新CPU漏洞Meltdown详细分析
- 推荐一款好用的免费云服务器
- 低成本DIY:4G/5G网络遥控无人机-无人车-图传/数传/遥控一体!
- 面板数据分析步骤及流程-R语言
- HTB[Tier 0]Appointment题解
热门文章
- PAT结构与算法7-46 新浪微博热门话题 (50行精简 测试点分析)
- 改变世界的windows操作系统
- 网站添加用户风险测评
- 如何解除win10和Git的最大文件路径限制
- Zookeeper-3.4.5安装步骤及异常处理
- 关闭compactos_HOWTO: 利用 CompactOS 减少 Windows 10 磁盘占用量
- 蚁群算法优化旅行问题
- 十年海军为什么选择开启代码人生?
- docker启动失败问题之/var/lib/docker/overlay
- 两年过去了,4399依旧坚挺,Flash还能继续?