无壳,ida64位进入
程序调用 __gmpz_init_set_str 函数,经查询是这样的
那么这题就是rsa加密了,之前也有一题rsa题
加密算法:
解密算法:
那么C=ad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35
E =65537
N=103461035900816914121390101299049044413950405173712170434161686539878160984549;
分解N得到p,q
p=282164587459512124844245113950593348271
q=366669102002966856876605669837014229419
有了p,q,e,就可以计算出私钥d,然后就对密文进行解密
看了几篇wp都是用py库写的
脚本
import gmpy2
import binascii
p = 282164587459512124844245113950593348271
q = 366669102002966856876605669837014229419
e = 65537
c = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35
n = p * q
d = gmpy2.invert(e, (p-1) * (q-1))
m = gmpy2.powmod(c, d, n)
print(binascii.unhexlify(hex(m)[2:]).decode(encoding="utf-8"))
flag{Pwn_@_hundred_years}