ASR

Category: Cryptography

Points: 50

Description: Déchiffrez ce message !

Files: pub.key enc

TL;DR

An attack on the public key allows us to find the private key and decrypt the flag.

Methodology

>_ file pub.key enc
pub.key: ASCII text
enc:     data

>_ cat pub.key
-----BEGIN PUBLIC KEY-----
MIIBHzANBgkqhkiG9w0BAQEFAAOCAQwAMIIBBwKBgQFhlIOluuAcFAdBWvfwKUwI
P71JK3mocBEII+GDY1czp3IPiKQvVnIraRjLqkpfyp+0dVTwIAoNlxZD0Vc4k6eh
7Bga34NysEtB1m9FT3Sp89juKpz2ubGByvCb1JBj/pHoIauOMHB6GsI5f1Lkk0dx
XHN2JkzEXHJ9HGlhq/OjEQKBgF3Nn1FtKmfSliDjEEuS289r7i/UOQkA3IfjkriG
u7DFLSRz9Lv/lILOP9yCGa5CwN5GGXOFjyTzBN9YORRt8t7pSj4BP9TUoEV4WXSp
FemEdMizhIlEc+p5UP1siva5V7+2P33x5N8p+H+a6l7G/4eTbF6cDBxvLEYJLJ+k
sGqJ
-----END PUBLIC KEY-----

>_ cat enc
8�X5?��5u2_*�_j���
r~�B�L�?��$��F"\�(�:��]��nˏ���

Reading the title, it soon becomes clear that we are dealing with RSA !

So we have to recover the message but we don't have the private key (it would be too easy).

The statement says "Déchiffrez" and not "Décrypter" (in french there is a difference ;) It means that we can recover the private key using the public key.

So we're going to try to find the private key using our public key.

RsaCtfTool is useful to do that :)

>_ ./RsaCtfTool/RsaCtfTool.py --publickey pub.key --private
-----BEGIN RSA PRIVATE KEY-----
MIICOAIBAAKBgQFhlIOluuAcFAdBWvfwKUwIP71JK3mocBEII+GDY1czp3IPiKQv
VnIraRjLqkpfyp+0dVTwIAoNlxZD0Vc4k6eh7Bga34NysEtB1m9FT3Sp89juKpz2
ubGByvCb1JBj/pHoIauOMHB6GsI5f1Lkk0dxXHN2JkzEXHJ9HGlhq/OjEQKBgF3N
n1FtKmfSliDjEEuS289r7i/UOQkA3IfjkriGu7DFLSRz9Lv/lILOP9yCGa5CwN5G
GXOFjyTzBN9YORRt8t7pSj4BP9TUoEV4WXSpFemEdMizhIlEc+p5UP1siva5V7+2
P33x5N8p+H+a6l7G/4eTbF6cDBxvLEYJLJ+ksGqJAiBwPZzbyIHRJHcDVQZXFlpU
5b4HvHciPKyW87jODLoZ4QJBAQp4gUlFUICq9LzNNJivOc9LbNi66ewuHPRncyPE
drrhBWiMUtcg7beo6XhBsV011w7rEDqbk8+qBVv6Kvzprq8CQQFTr8A0yVLnOizE
IwSq8dq4cWGD475p2fhsbBcID00zVnsiYcMTLkzCZSVoBydu/LRek7yCDlXXloPO
zzi4gjo/AiBwPZzbyIHRJHcDVQZXFlpU5b4HvHciPKyW87jODLoZ4QIgcD2c28iB
0SR3A1UGVxZaVOW+B7x3IjyslvO4zgy6GeECQBpMZTaMRQcpjIjitx2z84u5CbBZ
+CgivVXfohk2UlfLZlhwU1Gkk/nWFcXc6rRmJc1jJGIKvDqvAdb3DVpoXOQ=
-----END RSA PRIVATE KEY-----

Perfect, we've got our private key. Now decrypt the message.

Always with RsaCtfTool

>_ ./RsaCtfTool/RsaCtfTool.py --publickey pub.key --uncipherfile enc
[+] Clear text : b'\x00\x02L\x80\xf7\xda\x832\xc2\xa9\x01\xdc\xff\x01\x0b\xb3\x05\x83Ak\x7f\xa48o\xf6\xbek\xe2:\xb6\x1f5\x19{\x1b\x99\xf9\xf9\xd4\xfe\xb4\xd5\xbc!e\x85\x0f\x83Q\xd8\xcf\x16\x19\xbbZ\xc6)F\xf4\xfc\xa7\xfd\xe1,\xe8D\xef\xb5\x02\x16\x81\xfd4\x0c\x16:]ZK\xcf\xc7\x8b\xfbx\xaf\xe1\x00BREIZHCTF{RSA_may_be_sometimes_vulnerable}'

FLAG_IS:

BREIZHCTF{RSA_may_be_sometimes_vulnerable}