SUCTF Crypto&&Reverse
Crypto AK指南
DSA
共r攻击得到x,对消息签名得到flag
1 | #coding=utf8 |
MT
angr或z3求解
Prime
nc过去得到四组数据n1、n2、n3、n4,c1、c2、c3、c4
其中 c = powmod(m,n,n) ,要求求出m1、m2、m3、m4
发现n1、n2、n3、n4两两共因子,所以每个n都可以分解为诸如
n = p * qp * qqp * qqq 的形式,由费马小定理求出phi,而后求逆元d,就可得到m
m = powmod(c,n,n)
代码写得比较丑,将就看吧
1 | import gmpy2 |
RSA
Least Significant Bit Oracle Attack
注意因为整除的缘故最后得到的值与实际值有一定偏差
exp
1 | from pwn import * |
Reverse
SignIn
签到题,n可分解,直接求出明文
1 | __int64 __fastcall main(__int64 a1, char **a2, char **a3) |
exp
1 | import gmpy2 |
flag 为 suctf{Pwn_@_hundred_years}
hardCPP
ollvm混淆的题目,还有个简单的时间反调,但是F5之后可以直接看到关键的处理区域
1 | v35 = v38 ^ s[v36]; |
对算法进行逆向,可以得到
1 | for i in range(0x20): |
很容易就可以得到输入为#flag{mY-CurR1ed_Fns}
flag为 flag{mY-CurR1ed_Fns}