文章目录

  • 概述
  • 题目
  • 解题思路
  • 解题代码

概述

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 * qn2 = 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相关推荐

  1. sqlmap md5怎么解密_三十九,hackthebox渗透之DirBuster扫描路径及Sqlmap

    一.DirBuster扫描目录 hack the box是一个在线Web渗透实验平台,能帮助你提升渗透测试技能和黑盒测试技能,平台上有很多靶机,从易到难,各个级别的靶机都有.因为这些靶机放在平台上供大 ...

  2. Hackthebox(1)系列持续更新

    Hackthebox第一关 文章目录 Hackthebox第一关 一.Hackthebox配置openvpn 配置openvpn 二.第0层(简单) 终端弄好以后点击产卵机,然后会给你创建一个实例 问 ...

  3. HackTheBox MetaTwo 网站框架CVE获取用户shell和破解私钥提权

    题目网址: https://app.hackthebox.com/machines/MetaTwo 枚举 使用nmap枚举靶机 nmap -sC -sV -p- 10.10.11.186 扫到了域名, ...

  4. HackTheBox 如何使用

    如何开始? 1.到官网注册一个账号 https://www.hackthebox.com/ 2.验证自己的邮箱 3.下载 openvpn 4.到左边的 labs 实验室开始学习或直接点击 start ...

  5. HackTheBox –Craft实战

    HackTheBox –Craft ip:http://10.10.10.110/ 信息搜集 端口扫描:使用nmap扫描发现开了22(ssh)端口和443(http/ssl) 版本可从web网页上获取 ...

  6. CTF-Anubis HackTheBox 渗透测试(二)

    大家好,我是你们好朋友小峰.预计从今天开始,陆陆续续为大家推出       CTF-Horizontall HackTheBox 系列文章. 0x01 简介 Anubis是由作者4ndr34z在Hac ...

  7. Hackthebox:Arctic Walkthrough

    预备知识 使用了msfvenom,不想看的可以跳过 浏览器信息收集尤其是细节发现服务信息不能过度依赖工具 MS10-059.smbserver.jsp reverse shell 信息收集和获取立足点 ...

  8. hackthebox的网站使用教程

    Google浏览器下载 下载url:https://www.google.cn/chrome/ hackthebox网站 网站url:https://www.hackthebox.com/home 获 ...

  9. 小黑客,2020还没有邀请码注册 hackthebox ?reCAPTCHA验证码加载不出来?

    访问邀请码页面 https://www.hackthebox.eu/invite F12控制台输入 $.post('https://www.hackthebox.eu/api/invite/gener ...

  10. [Hackthebox]获取社区邀请码

    获取Hackthebox邀请码教程 登录社区首页后,下拉页面,点击Join按钮进入邀请页面.我们需要通过该页面展示的信息,获取邀请码以注册社区账号.这是进入训练社区的一个小挑战. 流程 可以直接通过浏 ...

最新文章

  1. 语句覆盖(Statement coverage)
  2. Python 运行 Python hello.py 出错,提示: File stdin , line 1
  3. 安装终端服务和终端服务授权,激活终端服务授权
  4. [C++11]lambda表达式语法
  5. NOI数学:莫比乌斯变换
  6. 分支语句复习 java 9018
  7. stm32可以移植linux系统吗,如何在STM32上移植Linux?超详细的实操经验分享
  8. 区块链,到底是美好未来还是题材炒作?
  9. 计算机专业教学实施,中职计算机专业教学项目的设计与实施
  10. Ubuntu、SUSE的发音
  11. jsp+mysql校园卡管理系统设计与实现
  12. 银行卡号与开户行对照文档
  13. 现在卖什么赚钱?看看你适合哪种赚钱方式!
  14. blender建模小试
  15. python爬取苏宁易购--jsonpath方法
  16. 首发:最新CPU漏洞Meltdown详细分析
  17. 推荐一款好用的免费云服务器
  18. 低成本DIY:4G/5G网络遥控无人机-无人车-图传/数传/遥控一体!
  19. 面板数据分析步骤及流程-R语言
  20. HTB[Tier 0]Appointment题解

热门文章

  1. PAT结构与算法7-46 新浪微博热门话题 (50行精简 测试点分析)
  2. 改变世界的windows操作系统
  3. 网站添加用户风险测评
  4. 如何解除win10和Git的最大文件路径限制
  5. Zookeeper-3.4.5安装步骤及异常处理
  6. 关闭compactos_HOWTO: 利用 CompactOS 减少 Windows 10 磁盘占用量
  7. 蚁群算法优化旅行问题
  8. 十年海军为什么选择开启代码人生?
  9. docker启动失败问题之/var/lib/docker/overlay
  10. 两年过去了,4399依旧坚挺,Flash还能继续?