InnoCTF International 2019 Writeup
7月13~14日にInnoCTFが開かれていたので、zer0pts
として参加しました.
チームとしては、(多分)9位でした.
終了後スコアサーバーがすぐ落ちたので(は???)、昼頃に見たときの順位です.
僕はwelcom問題含む3問を解きました.
今回Cryptoはguessingばかりだったので、つらかったです.
チームメンバーのWriteup
st98: InnoCTF International 2019 の write-up - st98 の日記帳
[Crypto] One Hundred Time RSA
nとcが渡されます. 情報はこれだけで、ソースコードはないです.
nが大きくないので、簡単に素因数分解できます. これでpとqが手に入ったのですが、eがわかりません. 0x10001や3、100(問題名から)を試してもうまくいきません.
ここで一旦ロシア人になると、eを総当たりしつつ、100回復号を繰り返すという発想に至ります. たしかeが34800とかだった気がします. 結構時間がかかりました.
from Crypto.Util.number import inverse from binascii import unhexlify p = 37975227936943673922808872755445627854565536638199 q = 40094690950920881030683735292761468389214899724061 n = p*q phi = (p-1) * (q-1) e = 1 while True: c = 594147643758126272722748149715320287571901225730250492908477114410071694555274921111773337859009576 if e % 100 == 0: print("[+] now public exponents is :", e) d = inverse(e, phi) e += 1 for i in range(100): c = pow(c, d, n) try: m = unhexlify(hex(c)[2:]) if b"InnoCTF" in m: print(m) except: pass
InnoCTF{cr4ck_rs4_4g41n_7bca}
[Crypto] RF
暗号文I3_naseincamno_r15Ct_t0T07_}Fnhs{1
が渡されます.
たしか、問題文が「フェンスの上で見つけた」みたいな感じでした. フラグのフォーマットや問題文から推測するに、Rail fence cipherですね. 適当なソルバーに投げてやると、見つかります.
InnoCTF{n0t_ca3sar_7h1s_t1me_in50}
keyは8でした.
さいごに
えっっ、guessing過ぎません!? Cryptoはたいていの問題みたんですけど、guessing祭りでした.
チームメンバー各位お疲れ様でした.