Files
ctf/2025/cscg/crypto/shadows-of-neon-city/exploit.py
2025-06-06 03:13:31 +02:00

25 lines
771 B
Python

from pwn import remote
import re
from base64 import b64decode
from sympy import factorint
from Crypto.Util.number import bytes_to_long, inverse, long_to_bytes
with remote("d7c40d8ec4e734fe7ac812f9-1338-shadows-of-neon-city.challenge.cscg.live", "1337", ssl=True) as conn:
data = conn.recvuntil(b":\n").decode("utf-8")
print(data)
matches = re.findall(r'(\w+)\s*=\s*([\w/=+]+)', data)
locals().update({key: value if not value.isdigit() else int(value) for key, value in matches})
cipher = bytes_to_long(b64decode(cipher))
p,q = factorint(n).keys()
n = p * q
phi_n = (p-1) * (q-1)
d = inverse(e, phi_n)
plain_int = pow(cipher, d, n)
plaintext = long_to_bytes(plain_int)
conn.sendline(plaintext)
conn.interactive()