SWPUCTF 2021 新生赛crypto1

runwu2204 Lv6

[SWPUCTF 2021 新生赛]crypto1 | NSSCTF

题干

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from gmpy2 import *
from Crypto.Util.number import *
flag = '****************************'
flag = {"asfajgfbiagbwe"}
p = getPrime(2048)
q = getPrime(2048)
m1 = bytes_to_long(bytes(flag.encode()))

e1e2 = 3087
n = p*q
print()

flag1 = pow(m1,e1,n)
flag2 = pow(m1,e2,n)
print('flag1= '+str(flag1))
print('flag2= '+str(flag2))
print('n= '+str(n))

给了flag1和flag2,两个都i是对m加密对n取余,符合共模攻击的条件,同时e1e2满足条件e1e2=3087

可以通过遍历所有值暴力求解,对结果进行限制

exp

1
2
3
4
5
6
7
8
9
10
11
12
13
flag1= 
flag2=
n=
def gongmogongji(c1, c2, e1, e2,n):
from Crypto.Util.number import long_to_bytes
from gmpy2 import gcdext,iroot
gcd,x,y=gcdext(e1,e2)
m=iroot((pow(c1,x,n)*pow(c2,y,n))%n,gcd)[0]
return long_to_bytes(m) if long_to_bytes(m)[:6]==b'NSSCTF'else ''
for i in range(1,3087):
if(3087%i==0):
j=3087//i
print(gongmogongji(flag1,flag2,i,j,n),end='')

image-20230709234504777

  • 标题: SWPUCTF 2021 新生赛crypto1
  • 作者: runwu2204
  • 创建于 : 2023-07-09 23:39:13
  • 更新于 : 2023-07-09 23:45:17
  • 链接: https://runwu2204.github.io/2023/07/09/CTF WP/Crypto/SWPUCTF 2021 新生赛crypto1/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
SWPUCTF 2021 新生赛crypto1