BUUCTF-RSA2
今天遇到了一道题,代码如下:
N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471 e = 46731919563265721307105180410302518676676135509737992912625092976849075262192092549323082367518264378630543338219025744820916471913696072050291990620486581719410354385121760761374229374847695148230596005409978383369740305816082770283909611956355972181848077519920922059268376958811713365106925235218265173085 import hashlib flag = "flag{" + hashlib.md5(hex(d)).hexdigest() + "}"
刚开始用yafu分解N,分解了半天没分出来……
查阅资料了解了wiener attack:
https://github.com/pablocelayes/rsa-wiener-attack
在RSAwienerHacker.py结尾处写上:
if __name__ == "__main__": N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471 e = 46731919563265721307105180410302518676676135509737992912625092976849075262192092549323082367518264378630543338219025744820916471913696072050291990620486581719410354385121760761374229374847695148230596005409978383369740305816082770283909611956355972181848077519920922059268376958811713365106925235218265173085 hacked_d = hack_RSA(e, N) print("d =", hacked_d)
得到d为:920758995414587152829426558580025657357328745839747693739591820283538307445
import hashlib d=8920758995414587152829426558580025657357328745839747693739591820283538307445 flag = "flag{" + hashlib.md5(hex(d).encode('utf-8')).hexdigest() + "}" print(flag) #flag{8159e6c4abdd3b94ce461ed9a1a24017}