SWPUCTF 2021 新生赛

新生赛,题目难度中等

crypto1

Problem: [SWPUCTF 2021 新生赛]crypto1

思路

共模攻击,简单爆破一下 \(e_1\)\(e_2\) 如果 \(e_1\)\(e_2\) 互素有: \[ s*e_1+t*e_2=1 \]

如果不互素,设 \(gcd(e_1,e_2) = g\) ,则: \[ s*e_1+t*e_2=g \] 根据扩展欧几里德算法,可以求出 \(s\)\(t\)\(g\),再根据共模攻击求出 \(m\) \[ \begin{aligned} c_1 ^ s *c_2 ^ t &= m ^ {s*e_1}*m ^ {t*e_2} \\ &= m ^ {s*e_1+t*e_2} \\ &=m ^ g \end{aligned} \] 最后再对 \(m\)\(g\) 次方跟即可

exp

1
2
3
4
5
6
7
8
9
10
11
for e1 in range(1,3087):
if 3087 % e1 == 0 :
e2 = 3087 // e1
g, s, t = gcdext(e1,e2)
_m = pow(c1,s,n) * pow(c2,t,n) % n
m = long_to_bytes(iroot(_m,g)[0])
if m[0:6] == b'NSSCTF':
print(g)
print(e1)
print(e2)
print(m)

crypto2

Problem: [SWPUCTF 2021 新生赛]crypto2

思路

共模攻击 如果 \(e_1\)\(e_2\) 互素有: \[ s*e_1+t*e_2=1 \] 根据扩展欧几里德算法,可以求出 \(s\)\(t\),再根据共模攻击求出 \(m\) \[ \begin{aligned} c_1 ^ s *c_2 ^ t &= m ^ {s*e_1}*m ^ {t*e_2} \\ &= m ^ {s*e_1+t*e_2} \\ &=m \end{aligned} \]

exp

1
2
3
4
5
6
from Crypto.Util.number import *
from gmpy2 import *

g,s,t = gcdext(e1,e2)
m = pow(flag1,s,n) * pow(flag2,t,n) % n
print(long_to_bytes(m))

crypto3

Problem: [SWPUCTF 2021 新生赛]crypto3

思路

exp

crypto4

思路

exp

crypto5

思路

exp

crypto6

思路

exp

crypto7

思路

exp

crypto8

思路

exp

crypto9

思路

exp

crypto10

思路

exp

ez_rsa

思路

exp

pigpig

思路

exp

ez_caesar

思路

exp

思路

exp

SWPUCTF 2021 新生赛

https://vconlln.cn/d6cb82b.html

作者

Vc0n1ln

发布于

2021-01-17

更新于

2024-10-31

许可协议

CC BY 4.0

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×