栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

HackTheBox-TwoForOne

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HackTheBox-TwoForOne

文章目录
  • 概述
  • 题目
  • 解法

概述

HackTheBox 网站CTF靶场密码学相关题目TwoForOne,题目地址https://app.hackthebox.eu/challenges/twoforone,主要考点为RSA共模攻击。

题目

下载附件并解压缩,得到4个文件

识别文件格式

使用openssl分析key1.pem

openssl rsa -pubin -in key1.pem -text -modulus

Public-Key: (2048 bit)
Modulus:
    00:c6:ac:b8:df:48:6e:66:71:d4:a5:56:48:03:e1:
    c3:21:4a:8e:27:4d:e0:ac:00:43:ec:28:c8:58:9f:
    37:7c:7e:8d:30:8b:c3:e3:02:85:03:84:34:4b:a7:
    98:88:85:62:0a:41:8e:6a:d9:55:57:82:84:fc:04:
    f2:89:f1:26:b3:8a:01:81:62:51:ce:f9:a1:4f:d4:
    c2:49:d9:6b:69:08:7f:a9:1b:2e:1a:db:dc:80:cb:
    96:ff:0c:cb:61:29:d8:f6:73:7d:a8:50:c4:51:f2:
    ed:3f:6c:b6:1c:36:89:1d:c9:24:d0:ab:28:f2:6a:
    df:0e:d3:57:ce:84:8d:02:ff:e0:09:12:71:4c:cf:
    63:72:c1:f4:10:80:e8:67:47:a0:30:3e:b5:cd:f6:
    ce:91:2f:11:44:fd:4f:55:74:3c:79:68:75:a1:4f:
    df:f8:f8:b6:62:15:0c:56:be:58:b0:92:39:77:1d:
    c4:4d:96:90:79:c4:ad:8f:d9:93:bc:63:0b:78:55:
    d2:e0:2e:8b:e1:68:24:dc:d5:ab:38:13:23:1c:17:
    31:11:0a:8b:d0:28:d7:a1:df:ab:89:2e:75:29:45:
    57:ba:fc:71:ae:af:5e:48:db:02:67:a6:db:63:d3:
    50:f9:95:06:8e:e1:ca:d6:d3:2d:f1:1a:49:bd:24:
    ba:97
Exponent: 65537 (0x10001)
Modulus=C6ACB8DF486E6671D4A5564803E1C3214A8E274DE0AC0043EC28C8589F377C7E8D308BC3E302850384344BA7988885620A418E6AD955578284FC04F289F126B38A01816251CEF9A14FD4C249D96B69087FA91B2E1ADBDC80CB96FF0CCB6129D8F6737DA850C451F2ED3F6CB61C36891DC924D0AB28F26ADF0ED357CE848D02FFE00912714CCF6372C1F41080E86747A0303EB5CDF6CE912F1144FD4F55743C796875A14FDFF8F8B662150C56BE58B09239771DC44D969079C4AD8FD993BC630B7855D2E02E8BE16824DCD5AB3813231C1731110A8BD028D7A1DFAB892E75294557BAFC71AEAF5E48DB0267A6DB63D350F995068EE1CAD6D32DF11A49BD24BA97
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxqy430huZnHUpVZIA+HD
IUqOJ03grABD7CjIWJ83fH6NMIvD4wKFA4Q0S6eYiIViCkGOatlVV4KE/ATyifEm
s4oBgWJRzvmhT9TCSdlraQh/qRsuGtvcgMuW/wzLYSnY9nN9qFDEUfLtP2y2HDaJ
Hckk0Kso8mrfDtNXzoSNAv/gCRJxTM9jcsH0EIDoZ0egMD61zfbOkS8RRP1PVXQ8
eWh1oU/f+Pi2YhUMVr5YsJI5dx3ETZaQecStj9mTvGMLeFXS4C6L4Wgk3NWrOBMj
HBcxEQqL0CjXod+riS51KUVXuvxxrq9eSNsCZ6bbY9NQ+ZUGjuHK1tMt8RpJvSS6
lwIDAQAB
-----END PUBLIC KEY-----

得到

e = 65537
n = 0xC6ACB8DF486E6671D4A5564803E1C3214A8E274DE0AC0043EC28C8589F377C7E8D308BC3E302850384344BA7988885620A418E6AD955578284FC04F289F126B38A01816251CEF9A14FD4C249D96B69087FA91B2E1ADBDC80CB96FF0CCB6129D8F6737DA850C451F2ED3F6CB61C36891DC924D0AB28F26ADF0ED357CE848D02FFE00912714CCF6372C1F41080E86747A0303EB5CDF6CE912F1144FD4F55743C796875A14FDFF8F8B662150C56BE58B09239771DC44D969079C4AD8FD993BC630B7855D2E02E8BE16824DCD5AB3813231C1731110A8BD028D7A1DFAB892E75294557BAFC71AEAF5E48DB0267A6DB63D350F995068EE1CAD6D32DF11A49BD24BA97

同理使用openssl分析key2.pem,得到

e = 343223
n = 0xC6ACB8DF486E6671D4A5564803E1C3214A8E274DE0AC0043EC28C8589F377C7E8D308BC3E302850384344BA7988885620A418E6AD955578284FC04F289F126B38A01816251CEF9A14FD4C249D96B69087FA91B2E1ADBDC80CB96FF0CCB6129D8F6737DA850C451F2ED3F6CB61C36891DC924D0AB28F26ADF0ED357CE848D02FFE00912714CCF6372C1F41080E86747A0303EB5CDF6CE912F1144FD4F55743C796875A14FDFF8F8B662150C56BE58B09239771DC44D969079C4AD8FD993BC630B7855D2E02E8BE16824DCD5AB3813231C1731110A8BD028D7A1DFAB892E75294557BAFC71AEAF5E48DB0267A6DB63D350F995068EE1CAD6D32DF11A49BD24BA97
解法

RSA基础知识可参考HackTheBox-Weak RSA

使用python库gmpy2分析,可以发现e不同,但n相同,且e互质,如下

In [1]: import gmpy2

In [2]: e1 =  65537

In [3]: e2 = 343223

In [4]: gmpy2.gcd(e1,e2)
Out[4]: mpz(1)

e互质,n相同,属于RSA的共模攻击,利用gmpy2,解题代码如下

# coding: utf-8

import gmpy2
from Crypto.Util.number import long_to_bytes

e1 = 65537
e2 = 343223
n = 0xC6ACB8DF486E6671D4A5564803E1C3214A8E274DE0AC0043EC28C8589F377C7E8D308BC3E302850384344BA7988885620A418E6AD955578284FC04F289F126B38A01816251CEF9A14FD4C249D96B69087FA91B2E1ADBDC80CB96FF0CCB6129D8F6737DA850C451F2ED3F6CB61C36891DC924D0AB28F26ADF0ED357CE848D02FFE00912714CCF6372C1F41080E86747A0303EB5CDF6CE912F1144FD4F55743C796875A14FDFF8F8B662150C56BE58B09239771DC44D969079C4AD8FD993BC630B7855D2E02E8BE16824DCD5AB3813231C1731110A8BD028D7A1DFAB892E75294557BAFC71AEAF5E48DB0267A6DB63D350F995068EE1CAD6D32DF11A49BD24BA97

c1=int(open('./message1','rb').read().decode('base64').encode('hex'),16)  
c2=int(open('./message2','rb').read().decode('base64').encode('hex'),16)  


_, r, s = gmpy2.gcdext(e1, e2)

m = pow(c1, r, n) * pow(c2, s, n) % n
print long_to_bytes(m)

在python2环境运行后得到flag

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/688991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号