zoukankan      html  css  js  c++  java
  • 攻防世界 cr4-poor-rsa

    题目

    给了一个压缩包,内有文件:flag.b64(打开发现是base64编码的)和key.pub

    解题过程

    1. 首先利用Crypto.PublicKey的RSA模块从key.pub中获取公钥信息,这个RSA相关知识点中已有介绍
    2. 得到n后可以拿到大数分解,得到

    p = 863653476616376575308866344984576466644942572246900013156919
    q = 965445304326998194798282228842484732438457170595999523426901

    1. 由p,q,e得到d(RSA相关知识点中已有介绍)
    2. rsa库的PrivateKey生成私钥
    3. 打开flag.b64并用base64解码,再利用key解密即可得到flag
    from Crypto.PublicKey import RSA
    from gmpy2 import invert
    import rsa
    from base64 import b64decode
    
    f = open("F:\ChromeCommon\key.pub","rb").read()
    pub = RSA.importKey(f)
    n = pub.n
    e = pub.e
    
    p = 863653476616376575308866344984576466644942572246900013156919
    q = 965445304326998194798282228842484732438457170595999523426901
    d = int(invert(e, (p-1)*(q-1)))
    
    key = rsa.PrivateKey(n,e,d,p,q)
    f = open("F:\ChromeCommon\flag.b64",'r').read()
    c = b64decode(f)
    flag = rsa.decrypt(c,key)
    print(flag)
    

    ALEXCTF{SMALL_PRIMES_ARE_BAD}

  • 相关阅读:
    344. 反转字符串
    942. 增减字符串匹配
    CGO内部机制
    CGO函数调用
    CGO类型转换
    CGO基础
    Go net/http代理
    GO-中间件(Middleware )
    Go如何巧妙使用runtime.SetFinalizer
    ARM基础
  • 原文地址:https://www.cnblogs.com/vict0r/p/13445509.html
Copyright © 2011-2022 走看看