SECCON 2019 Online CTF Writeup

SECCON 2019 チーム「./Vespiary」で出て 37 位 2402 点でした。 以下、自分が取り組んだ問題です(チームメンバーと解いたものを含む)。 Table of Contents [crypto] coffee_break [misc] Beeeeeeeeeer [crypto] ZKPay [web] web_search [crypto] Crazy Repetition of Codes [misc] Sandstorm [crypto] coffee_break ソースコードを読んで逆算するプログラムを書けば良い。 import sys from Crypto.Cipher import AES import base64 def decrypt(key, cipher): s = '' for i in range(len(cipher)): c = cipher[i] - 0x20 - (ord(key[i % len(key)]) - 0x20) if c < 0: c += (0x7e - 0x20 + 1) c += 0x20 s += chr(c) return s key1 = "SECCON" key2 = "seccon2019" cipher = AES. [Read More]
CTF 

Devcon 5 - "Chain Relay Under Attack CTF" Writeup

Devcon 5 // Oct 8 - 11, 2019 の3日目に開催されたworkshop「Nuts and Bolts of Cross-Chain Communication」でのCTFが新鮮で面白かったです。(DEFCONではない) 問題はシンプルで、「Ethereumのスマートコントラクトが与えられる。このコントラクトはBitcoinのブロックチェーンを構築するが、不正なブロックが送られるとブロックチェーンが壊れる。直してね」というもの。なんでこういう問題かっていうのは、彼らのクロスチェーンコミュニケーションの論文を参照。 Flagを取る形式ではなく、実際に攻撃を捌ければ点数が貰えるフルフィードバック形式。 問題 問題リポジトリ: crossclaim/devcon5-relay-attack: Game repo for DEVCON 5 Cross-Chain Communication Workshop attackTestCases.test.min.jsにサンプルケースが転がってます。 testで結果が変わることがあって大変でした。 TESTCASE 1: Do we allow users to reset the relay with a new genesis block at will?? サンプルケース it("TESTCASE 1: set duplicate initial parent - should fail", async () => { l(), await c.reverts(relay.setInitialParent(genesis.header, genesis.height)) }), Genesis block が改ざんされないようにする問題。 [Read More]