Kategori: write-up

  • EVEN RSA CAN BE BROKEN???

    Elimizdeki netcat bağlantısında RSA’yı çözmek için bazı bilgiler bulunuyor. Her şeyden önce RSA’yı açıklayarak başlamak istiyorum.

    RSA, iki asal sayının çarpımına dayanan asimetrik bir şifreleme algoritmasıdır. Bahsettiğimiz asal sayılar oldukça uzun olduğundan günümüz teknolojisi ile kırılabilmesi pek mümkün değildir. Ancak senaryomuzda olduğu gibi yanlış RSA yapılandırmaları RSA’nın kırılmasına sebep olabilmektedir.

    Bana verilen netcat bağlantısını inceliyorum.

    RSA şifreleme algoritması çok basit bir mantığa dayanır. N değeri iki farklı asal sayının çarpımına dayanır. N sayısını çarpanlarına ayırabilmek için bağlantıyı ziyaret edelim. N değerini çarpanlarına ayıralım.

    Çarpanlarından birinin 2 olduğunu görüyoruz. Bu durumda küçük bir kod ile RSA’yı kırabiliriz.

    RSA Decrypt Template
    from Cryptodome.Util.number import inverse, long_to_bytes
    
    # değerleri netcat bağlantısından inceleyin
    n = 
    c = 
    e = 
    
    p = 2
    q = n // 2
    phi = (p - 1) * (q - 1)
    
    d = inverse(e, phi)
    m = pow(c, d, n)
    
    print(long_to_bytes(m).decode())

    Kodumuzu çalıştırıyoruz ve flag’i ekrana yazdırıyoruz.