通过这道题学到了许多东西,GNU 高精度算法库,密码学python两个常用的函数库 crypto和 gmpy2,以及python的binascii模块,采用yafu来分解n得到q和p,加深了对于RSA加密的认知。
具体解题过程
首先找到关键部分,这里就是main函数
对sub_56235520096A函数进行分析,发现是将输入的input转换为字符串的16进制进行储存
接下来__gmpz_init_set_str通过浏览器了解到是GNU的某个函数,对于一个大数进行初始化,这个大数数值就是中间这个参数,最后一个参数为这个数的进制,第一个参数类似于标识符。
关键部分__gmpz_powm函数,通过这个函数了解到原理与RSA加密类似,将RSA的e,n对应,采用yafu来对n分解,得到q和p。
最后通过gmpy2得到明文
0x73756374667b50776e5f405f68756e647265645f79656172737d
将它转化为ascall码得到flag
suctf{Pwn_@_hundred_years}