Gafna Blog

Back

Brute#

No need fancy crypto trick just brute, and btw you have to spin up to 20 vms with multi-thread to make it fast enough.

Pada challenge ini kita diberi dua file, satu berisi cipher dan satu kode how to cipher.

from Crypto.Util.number import getStrongPrime
m = int.from_bytes("IFEST13{???}".encode())
p = getStrongPrime(1024)
q = getStrongPrime(1024)
n = p * q
print(f'{pow(m, 0x10001, n)}\n{n}\n{p >> 40}')
python

Kodenya cukup simple, but the reversing not so easy. Hal yang jelas, kita harus recover n, p, dan q buat dapetin m. p yang kita punya bukan p asli karena p yang kita punya kehilangan 40 bit karena shift ke kanan, anggap p nya adalah p_high, maka p = p_high * 2^40 + x, di mana x adalah 40 bit yang hilang. Nah buat cari x, kita bisa pake coppersmith method pake tools dari sagemath, yaitu small_roots.

Jadi x sudah dapat, berarti p = p_high * 2^40 + x juga udah dapat, otomatis q juga dapat karena n = p * q <=> q = n / p. Assekkk dah dapat semua, kita bisa dapetin m dengan informasi tadi berdasarkan persamaan ini:

Flag: IFEST13{happy_brute__as_long_as_possible_lol_it_wont_be_the_flag_isnt_it?}
```
Brute
https://gafnaa.vercel.app/blog/ifest13/crypto/brute
Author Gafna Al Faatiha Prabowo
Published at May 11, 2025