BabyRSA

点击此处获得更好的阅读体验


WriteUp 来源

https://xz.aliyun.com/t/1589

题目考点

  • RSA

解题思路

1
2
M = r * bytes_to_long('hctf{' + sha256(open('./flag').read()).hexdigest() + '}')
S = pow(M, d, n)

程序接收 r,然后同 flag 相乘后计算出它的数字签名先说下本来的思路,flag 为 m,单纯 flag 的签名为 S,返回的签名为 S',如果我们构造 r=R^e

e 的值未知,通过爆破 e 的值遍历提交 R^e,再根据上式得出 flag

但是题目忘记对 r 进行限制,导致也可以通过传入 r=2 来做出

因为 2m < n,所以直接对 S'^e 除以 2 就是 m

然后对 m^2 开方就是 flag 了

Flag

1