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祭りでした.
チームメンバー各位お疲れ様でした.