「配枪朱丽叶。」

RootのCTF学习笔记。

RSA-低加密指数攻击&密文为base64编码的脚本

n = 27262030738190162906068533309218248319312037416856794814532459866130196673561833084739048171769479893806671499522643803412108279907223895517897969906253626028270289028646596897429641138913001561947557784840311014399973312098056896539904624036584153785225626096007313018814076860235378686567457599895712604364100507424939342862464483596795761725357279364545154915110900098124905389351969357103586063992040096368146580315262263546850581515833590884397726108478477798668261762306189036525841356592859315437201733146083995028221597538824801113980100295046731791678895520928441645173205511865657977068061078456941189550383
e = 3

c1 = FATe12RvmXf/xIGAvNprfAQUpt1RBFw1m/zXkDKGr/vNjy9mTyT/2khYY5zcRB68fiuaehpa5HqhYprATPNty1ui+3KhW4iUBZC0J7/6zCPwocHPouHrNq3NAXhLgxYKrZkr+elHcCaP9Qz8Y6V9fH6THuWRNNVqxnaima5HdVaxxzFUYkM53fvqmsaNZEpWuFDz
c2 = FATe12RvmXf/xIGAvNprfAQUpt1RBFw1m/zXkDKGr/vNjy9mTyT/2khYY5zcRB68j7m+E97aqeoObnxAe3oAKXY3RgH2FyW3oKuVYTx5VxGjCksbPd5cK2mqY/yc8qSgQ/v3JREuSAPNc1muPCv9A+FcnU6m9BHERDOxyUuZosK66GTyirqVTaC2YnviYVnoyVJT

RSA中e也称为加密指数。选取小一点的e可以缩短加密时间,但是选取不当的话,就会造成安全问题。

import gmpy2
import libnum
import base64
c1 = "FATe12RvmXf/xIGAvNprfAQUpt1RBFw1m/zXkDKGr/vNjy9mTyT/2khYY5zcRB68fiuaehpa5HqhYprATPNty1ui+3KhW4iUBZC0J7/6zCPwocHPouHrNq3NAXhLgxYKrZkr+elHcCaP9Qz8Y6V9fH6THuWRNNVqxnaima5HdVaxxzFUYkM53fvqmsaNZEpWuFDz"
c2 = "FATe12RvmXf/xIGAvNprfAQUpt1RBFw1m/zXkDKGr/vNjy9mTyT/2khYY5zcRB68j7m+E97aqeoObnxAe3oAKXY3RgH2FyW3oKuVYTx5VxGjCksbPd5cK2mqY/yc8qSgQ/v3JREuSAPNc1muPCv9A+FcnU6m9BHERDOxyUuZosK66GTyirqVTaC2YnviYVnoyVJT"
n = 27262030738190162906068533309218248319312037416856794814532459866130196673561833084739048171769479893806671499522643803412108279907223895517897969906253626028270289028646596897429641138913001561947557784840311014399973312098056896539904624036584153785225626096007313018814076860235378686567457599895712604364100507424939342862464483596795761725357279364545154915110900098124905389351969357103586063992040096368146580315262263546850581515833590884397726108478477798668261762306189036525841356592859315437201733146083995028221597538824801113980100295046731791678895520928441645173205511865657977068061078456941189550383
e = 3
b=base64.b64decode(c2)
c=libnum.s2n(b)
m = gmpy2.iroot(c,e)[0]
s= libnum.n2s(m)
print s