こんとろーるしーこんとろーるぶい

週末にカチャカチャッターン!したことを貼り付けていくブログ

SECCON Beginners CTF 2018 - RSA is Power

問題文

N = 97139961312384239075080721131188244842051515305572003521287545456189235939577
E = 65537
C = 77361455127455996572404451221401510145575776233122006907198858022042920987316

writeup

factordbでNを素因数分解する。
factordb.com

pとqがわかったので、CtyptoのCTF過去問からスクリプトを拝借して改造する。
正直、よくわかっていない。。。

import gmpy2
from Crypto.PublicKey import RSA
import binascii

n = 97139961312384239075080721131188244842051515305572003521287545456189235939577
e = 65537L
c = 77361455127455996572404451221401510145575776233122006907198858022042920987316

p = 299681192390656691733849646142066664329
q = 324144336644773773047359441106332937713

d = lambda p, q, e: int(gmpy2.invert(e, (p-1)*(q-1)))

key = RSA.construct((n, e, d(p,q,e)))

print(hex(key.decrypt(c)))
print(binascii.unhexlify(hex(key.decrypt(c))[2:-1]).decode("utf-8"))

実行する。

root@kali:RSA is Power# python try.py 
0x63746634627b35696d706c655f7273345f31735f336173795f6630725f757dL  
ctf4b{5imple_rs4_1s_3asy_f0r_u}

フラグゲット。
ctf4b{5imple_rs4_1s_3asy_f0r_u}