ByteCTF2022 Crypto wp
周末撞上MTCTF决赛了,ByteCTF没仔细研究。把做出的两道随便写写,等官方wp出来再学习学习吧~
Choose_U_Flag
题目源码:
1 | import ast |
NTRU加密,但是有一次decrypt的机会!题目只限制了dec_arr和key_coeffs不相等,由于加密过程
这题应该是非预期了。听说预期解使用NTRU的选择密文攻击来做,参考论文。
解题脚本(可能会报错,多试几遍):
1 | from Crypto.Util.number import * |
Compare
题目源码:
1 | from Crypto.Util.number import getPrime, getRandomNBitInteger, inverse |
本题是一个Paillier同态加密,考察的是同态函数中对加密数据的大小比较。在题目中,先给出公钥相关信息和待比较数据a和b的加密值,然后有一次任意解密的机会,解密出的值存放在MSG变量中,但不会输出。我们需要在每轮中使用同一个表达式来确定a和b的大小关系。题目对eval中的表达式进行了过滤,我们只能使用MSG和常量之间的运算式。
假设同态加密函数为
然后我们加上一个固定常量r,其比特长度略大于x即可,我这里取
接下来计算:
接着计算两个值:
解题脚本:
1 | from Crypto.Util.number import * |
ByteCTF2022 Crypto wp