Securebug.se CTF Odin 2021: AsymmetricJob

AsymmetricJob

Category: Cryptography

200 points

This looks asymmetric to me.

File: AsymmetricJob.zip

1024.txt

PePAW8C9Lm7yxsyA2MShozuHpDrRZJssZECWAYULMEMq7pfcX4cUyKpWvW8ZVQis+KtxT7pa1LEcq4UvYW8Gm44nTUwPOOzqw86MXonJ8Mwgx9gXlZHNReG/X2+bynejQo36b1axIt9RujXCxXzEsOzO/gpSVE24bgvwwvU+C28=

Keys.asymmetric

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCO5+gAGMWkPvEtXWLRaqxSm3PeNtMMDfbGQs15Gms7trqxGnK+pjZslc4oVyw6cu5RHrt4YpfGY1VeXG8ZeIiY5BagA7eMP8Rv5ixblyhA51MMDNd/+gNcDZH4MvtM1KsDYYeeD9SXKrBI10znG7nxV4fAB39Y4PW8UzMv8GFVEQIDAQAB
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI7n6AAYxaQ+8S1dYtFqrFKbc9420wwN9sZCzXkaazu2urEacr6mNmyVzihXLDpy7lEeu3hil8ZjVV5cbxl4iJjkFqADt4w/xG/mLFuXKEDnUwwM13/6A1wNkfgy+0zUqwNhh54P1JcqsEjXTOcbufFXh8AHf1jg9bxTMy/wYVURAgMBAAECgYAS9Ab9HEv6QK7UCXK1u6QnQJ7ZdgP/sUpteSavTSWzwcR5ALz/NCQ7upKhHw6qoduhvqW2jbz7fukvnqrNggL7sClLoP3F2y2w+tIkPcev+ymud+wt7y6hRGwHXdKqzHW9h+f4e/1zg59WDVf8OSz6h8+McGkGMqFaQDp0aiZmUQJBAO6dNrd3oSZi3Qj9mVlUAUJuissYoehnGAk0rwmTKLAmLTOcki0fVc7OH1nu2TZ4mLpun58mVUiVZS3o9LRtc08CQQCZUXrm5GoR2suD6LCSiUUY4s66bBxKfur7IxgZNP5Z/Q+9XanehxauJfiUKZU5dCF0oNX0BtLzOH6u3uNUnBmfAkEAtKH25fR93d1BjqjMCb96JJwiHZVMG+7PV0i2qPzp9E8yMLv6PIZYIvIO8bnKXV314EwWMhiGvye5LIQJmvywKQJAYJqUhBN8Og/QmCbvywUvQoT2mUQxd0cNLHxqXMelVHI9jqYLuKkJw2Utgb3Jxs/DnMcSyJXcKWB5ghnyx4csJQJAOC7RK4hytMeZ0Up/hWTIIpEdSeJtip/ZMbIRRVpnt6CrcQcvHWggO68RxjXnVqFz9IAZDsxeEIWTtv+6G2xOAQ==

Solution

I’m writing this writeup a bit later than other writeups. Actually, the reason is that I solved this challenge with use of https://www.devglan.com/online-tools/rsa-encryption-decryption I guess it’s totally acceptable solution, but I wanted to know how to solve it with Python.

And that’s the reason why I wrote below script, which returns the flag.

import base64
from Crypto.PublicKey import RSA

flag = base64.b64decode(open('/home/luc/Pobrane/securedebug/1024.txt', 'rt').read())
keys = open('/home/luc/Pobrane/securedebug/Keys.asymmetric', 'rt')
public = base64.b64decode(keys.readline())
private = base64.b64decode(keys.readline())

key = RSA.import_key(public)
c = int(flag.hex(), 16)
m = bytes.fromhex((hex(pow(c, key.e, key.n))[3:]))
print("Flag: {}".format(m))

A bit messy output because there wasn’t padding, but the flag is totally readable.

Flag: b'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff
\xff\xff\xff\xff\xff\xff\x00SBCTF{53cu23_data_724n5m15510n}'

Flag

SBCTF{53cu23_data_724n5m15510n}

Privacy Policy
luc © 2021