docs: replace dummy docs with GEMASTIK 2026 Warmup writeups (ch1-14)
- Deleted all previous dummy docs (defcon-quals-2024, infra/cloudflare-525, debugging/websocket-timeout, template, docs/*, notes/*, research/*) - Added 14 Gemastik warmup writeups covering encoding, stego, web, pwn, crypto - ch13: RSA small factors; ch14: RSA special integers via paper-search (GCD with paper appendix primes) - All flags recovered and documented with solution methods
This commit is contained in:
1 parent
be923cb432
commit
7a6e717c28
29 files changed
+841
-734
No files matched your search
@@ -0,0 +1,86 @@
|
||||
---
|
||||
title: "Slopped wave-2 — RSA Special Integers (Paper Search)"
|
||||
event: "GEMASTIK 2026 Warmup"
|
||||
challenge: "Slopped wave-2"
|
||||
category: "crypto"
|
||||
points: 501
|
||||
difficulty: "hard"
|
||||
flag: "GEMASTIK19{test_vector_of_listP_on_quant}"
|
||||
---
|
||||
|
||||
# Slopped wave-2 (501 pts) — Crypto / RSA "special integers"
|
||||
|
||||
**File:** `chals.py` — Kategori: `crypto, misc`
|
||||
|
||||
## Challenge
|
||||
|
||||
```python
|
||||
p = #### (hidden_length)
|
||||
q = #### (hidden_length)
|
||||
n = p * q
|
||||
print(n)
|
||||
|
||||
e = 0x10001
|
||||
p = bytes_to_long(b'GEMASTIK19{...}') # flag hijacked as 'p'
|
||||
c = pow(p, e, n)
|
||||
print(c)
|
||||
```
|
||||
|
||||
`c = pow(p, e, n)` dengan `p = bytes_to_long(flag)`, `e = 0x10001`, `n` 2048-bit.
|
||||
|
||||
## Analisis Serangan
|
||||
|
||||
Semua serangan standar gagal:
|
||||
- **Fermat** (close primes): gap > 1.2×10^159 — tidak dekat secara praktis
|
||||
- **ECM**: tidak smooth (B1=43M, nihil)
|
||||
- **Pollard p-1**: B=2M — tidak smooth
|
||||
- **ROCA**: n mod M bukan pangkat 65537
|
||||
- **Wiener / Boneh-Durfee**: e kecil (0x10001) berarti d besar — tidak berlaku
|
||||
- **Trial division** ke 10M: bersih (bukan multi-prime)
|
||||
|
||||
### Hint "paper search"
|
||||
|
||||
Hint eksplisit dari ch13 (`"you should use paper search mcp skill"`) mengarah ke paper akademik.
|
||||
|
||||
Paper yang relevan: **[Wang et al., "A First Successful Factorization of RSA-2048 Integer by D-Wave Quantum Computer (TST 2024.9010028)"](https://www.sciopen.com/article/10.26599/TST.2024.9010028)**.
|
||||
|
||||
Paper ini mendefinisikan **"special integer"**: `n = p·q` di mana kedua prima berbeda tepat 2 bit (`popcount(p XOR q) = 2`). Appendix Table S1 berisi 10 contoh (N, p, q) yang **menggunakan kembali prima yang sama** antar contoh — inilah "sloppiness" wave-2: modulus challenge merekonstruksi ulang dua prima dari dua contoh berbeda di appendix.
|
||||
|
||||
## Solusi
|
||||
|
||||
Hitung `gcd(n, P_i)` untuk setiap prima `P_i` di 10 contoh paper:
|
||||
|
||||
```python
|
||||
import math
|
||||
from Crypto.Util.number import long_to_bytes
|
||||
|
||||
n = 280088984259197676303322409340162768479248055253332178324048979479391032432289729496895136889553954879681054017549377236761031572728785368094833820151098377195413332119600135231380112995454122165424468980135704765977852529569814690639351847175244215778770376263888879859156353972612170752463744913383401062048491249958029243091765282473774483093168121753713425292265614066847042063133253723914013765258726038858443157129746991645277096281312454572347302870277064727079382216834376085631299651357Line truncated
|
||||
|
||||
e = 0x10001
|
||||
c = 0x... # dari challenge
|
||||
|
||||
# Dari appendix paper: 10 contoh, setiap contoh punya p & q
|
||||
paper_examples = [
|
||||
# (p_i, q_i) — faktor dari 10 contoh paper
|
||||
...
|
||||
]
|
||||
|
||||
for ex in paper_examples:
|
||||
for P in (ex.p, ex.q):
|
||||
g = math.gcd(n, int(P))
|
||||
if 1 < g < n:
|
||||
p_factor = g
|
||||
q_factor = n // g
|
||||
print(f"Found factor via GCD with paper prime!")
|
||||
break
|
||||
|
||||
phi = (p_factor - 1) * (q_factor - 1)
|
||||
d = pow(e, -1, phi)
|
||||
flag = pow(c, d, n)
|
||||
print(long_to_bytes(flag))
|
||||
# GEMASTIK19{test_vector_of_listP_on_quant}
|
||||
```
|
||||
|
||||
## Flag
|
||||
|
||||
`GEMASTIK19{test_vector_of_listP_on_quant}`
|
||||
Reference in new issue
Block a user