P1

1
2
3
4
5
6
7
8
9
10
flag = b'NSSCTF{******}'
p = getPrime(5120)
q = getPrime(5120)

n = p*q
e = 97
phi = (p-1)*(q-1)

m = bytes_to_long(flag)
c = powmod(m, e, n)

思路

  • 首先看到的是p和q都是5120位素数,n应该分解不出来,还是试了试果然分不出来
  • 看到m的大小后发现m的e次方应该也是远远小于n的,即c = m^e
  • 对c开e次方即可得到明文

EXP

1
2
m = gmpy2.iroot(c,e)
print(long_to_bytes(m))

总结

  • 考虑一下e很小的时候m和c的关系