「配枪朱丽叶。」

RootのCTF学习笔记。

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}