RSA Bwang

Deskripsi

tadi abis pesen udon, milih menu nya udon't need to lower your standard just because u're feeling lonely๐Ÿฅน๐Ÿ˜”๐Ÿซต

Author: AnYujin

Pada soal ini kita diberikan source code chall.py dan outputnya pada file out.

import hashlib
import os
from secret import flag
import binascii
from Crypto.Util.number import *
from sympy import *

def gen():
	p=getStrongPrime(1024)
	q=getStrongPrime(1024)
	r=getStrongPrime(1024)
	return p,q,r

m1,m2=flag[:len(flag)//2],flag[len(flag)//2:]
m1=bytes_to_long(m1)
m2=bytes_to_long(m2)

p1,q1,p2=gen()
q2=q1
n1=p1*q1
n2=p2*q2
e1=0x10001
e2=0x10001

ct1=pow(m1,e1,n1)
ct2=pow(m2*(n2-1),e2,n2)

p1tambahq1=p1+q1

print(f"n1  = {n1}")
print(f"e1  = {e1}")
print(f"ct1 = {ct1}")
print(f"p1tambahq1 = {p1+q1}")

print(f"n2  = {n2}")
print(f"e2  = {e2}")
print(f"ct2 = {ct2}")

Pada kode terdapat enkripsi menggunakan RSA, dimana flag dibagi menjadi 2 bagian (m1 dan m2). Bagian m1 di-enkripsi menggunakan modulus n1, dan bagian m2 menggunakan modulus n2. Di sini, terdapat vulnerability yakni kedua modulus memiliki nilai q yang sama (q1 == q2). Karena nilai n1 dan n2 diberikan, kita bisa mencari gcd(n1,n2) untuk mendapatkan q. Sisanya kurang lebih sama seperti dekripsi RSA pada umumnya. Berikut adalah solver lengkapnya.

Flag: TechnoFairCTF{J1k4_h1dup_4d4l4h_504l_m4t3m4t1k4_k4mu_4d4l4h_rumu5_y4n9_m3mbu4tny4_t3r454_m3ny3n4n9k4n}

Last updated