RTACTF 2021 Writeup

RTACTF 2021に参加しました。TAがメインのCTFって見たことなかったので新鮮でした。 ...

2021-12-19 · 2 min · 387 words · Laika

Asian Cyber Security Challenge 2021 Writeup

I played Asian Cyber Security Challenge 2021 this weekend and finished in 55th/483 place. I solved some crypto challenges and here’s how I solve them. ...

2021-09-22 · 5 min · 942 words · Laika

zer0pts CTF 2021 Writeup

...

2021-03-27 · 2 min · 426 words · Laika

Harekaze mini CTF 2020 Writeup

Wani Hackaseで参加して1032点の23位。 開始時刻ちょっと後に、予定を入れてしまっていたのでそんなに取り組めなかったけど勉強になりました。問題設定はシンプルだけど一筋縄では解けない問題が好きなので楽しかったです。 Harekazeの方々運営ありがとうございました🙇🙇 ...

2020-12-27 · 4 min · 673 words · Laika

SECCON 2020 Online CTF writeup

SECCON 2020 Online CTF に Wani Hackase で参戦して 44 位でした。 面白そうな問題が多かったけど、24時間が思ったより短く、あっという間に終わってしまった… This is RSA [Crypto, 62 solves] 特殊な素数生成を行っている。16 進数で 2 桁ずつ見ていくと、[$0\rm{x}30,0\rm{x}39$] の範囲に収まっている。これが枝刈りとして効いていて、下位の桁から探索していくと素因数分解できる。 1import sys 2from itertools import product 3 4from Crypto.Util.number import * 5 6from output import N, c 7 8sys.setrecursionlimit(10000) 9e = 0x10001 10 11def dfs(D, P, Q): 12 if D == 200 or P*Q == N: 13 if P*Q != N: 14 return 15 d = pow(e, -1, (P-1)*(Q-1)) 16 m = pow(c, d, N) 17 print(long_to_bytes(m)) 18 exit(0) 19 20 for i, j in product(range(10), repeat=2): 21 p = 3<<(8*D+4) | i<<(8*D) | P 22 q = 3<<(8*D+4) | j<<(8*D) | Q 23 mask = (1<<(8*D+8)) - 1 24 if (p*q)&mask == N&mask: 25 dfs(D+1, p, q) 26 27dfs(0, 0, 0) Flag: SECCON{I_would_always_love_the_cryptography_and_I_know_RSA_never_gets_old_So_Im_always_a_fan_of_this_mathematical_magic_and....

2020-10-11 · 1 min · 205 words · Laika

InterKosenCTF 2020 Writeup

InterKosenCTFにWani Hackaseで参戦して13位でした。 今回Discordにログが流れていましたが、自分のログが流れると達成感があるので結構好きです。 ciphertexts [crypto, 33 solves] 一目Common Modulus Attackが効きそうだが、$n$が異なるのでうまく行かない。 $$ \begin{aligned} c_1 &=& m^{e_1} + k_1pq \\ c_2 &=& m^{e_2} + k_2pqr \end{aligned} $$ となっているので、無理やり揃える方法として $r^{e_1} c_1$, $r^{e_2} c_2$ を考えてみると、 $$ \begin{aligned} r^{e_1}c_1 = (rm)^{e_1} + k_1pqr^{e_1}\\ r^{e_2}c_2 = (rm)^{e_2} + k_1pqr^{e_2+1} \end{aligned} $$ となる。2式に対して $\mod n_2$ をとると、 $$ \begin{aligned} r^{e_1}c_1 \equiv (rm)^{e_1} \mod n_2 = pqr \\ r^{e_2}c_1 \equiv (rm)^{e_2} \mod n_2 = pqr \end{aligned} $$ となる。これでCommon Modulus Attackが適用できる。 $rm$ の値が得られるので、$r$ で割ってFlagゲット。...

2020-09-07 · 2 min · 343 words · Laika

Crypto CTF 2020 writeup

Trailing Bits The description says that both of head and tail bits are lost, so I just tried adding some bits both of them. ...

2020-08-19 · 2 min · 423 words · Laika