๐Ÿ‡ฎ๐Ÿ‡ฉTEDCTF

participated as insidious_hex, got into the final stage

Cryptography

RSAPonent (356 pts)

Diberikan file source code rsaponentmod.py dan outputnya yakni output.txt. Apabila kita lihat pada source code, terdapat fungsi sebagai berikut. Apabila kita coba pahami, fungsi ini sebenarnya hanya mengalikan inputnya md dengan sebuah nilai konstan yang sangat besar yakni 4**(4**(4**2)). Ini juga berarti bahwa apapun nilai exp, itu tidak berpengaruh.

# dari rsaponentmod.py

def GCZ_x(md, exp):
return md * ((((1 << exp) - (1 << (exp - 1))) // ((1 << (exp - 2)) - (1 << (exp - 3)))) ** ( ((((1 << exp) - (1 << (exp - 1))) // ((1 << (exp - 2)) - (1 << (exp - 3)))) ** (((1 << exp) - (1 << (exp - 1))) // ((1 << (exp - 2)) - (1 << (exp - 3))))) ** ((((1 << exp) - (1 << (exp - 1))) // ((1 << (exp - 2)) - (1 << (exp - 3)))) >> 1)))

Karena pmod dan qmod berasal dari fungsi yang sama, maka mereka memiliki common divisor yakni nilai konstan 4**(4**(4**2)) yang sudah disebutkan sebelumnya. Apabila kita membagi masing-masing pmod dan qmod dengan nilai tersebut, kita akan mendapatkan nilai p dan q aslinya. Berikut adalah kode solvernya.

from math import gcd
from Crypto.Util.number import *

# c, pmod, qmod ambil dari output.txt. Google docs gakuat load angkanya :v

common = gcd(pmod,qmod)

def GCZ_reverse(md, com):
return md // com

p = GCZ_reverse(pmod,common)
q = GCZ_reverse(qmod,common)
n = p*q
e = 65537
phi = (p-1) * (q-1)
d = pow(e,-1,phi)
m = pow(c,d,n)

print(long_to_bytes(m))

Flag: CTFTED2022{3xponent_50_big_but_it_is_just_4_math_olymp_questions_to_rec0ver_pq:p}

wrth (400 pts)

Diberikan file source code chall.py dan outputnya out.txt. Ketika melihat source code, yang saya sadari adalah banyaknya nilai variabel yang di print-out untuk output-nya. Dari situ, kita bisa mencari mana saja yang bisa dimanfaatkan. Di sini, diketahui variabel q dihasilkan menggunakan nilai hasil dari w * h. Padahal, diketahui n = w * r * t * h dan nilai n, r, t merupakan salah tiga nilai yang di-print-out. Memanfaatkan ini, berikut adalah kode solvernya.

Flag: CTFTED22{simpl3_m0dul4r_4r1thm3ticc_d9e60e76db}

Last updated