この大会は2015/10/22 21:00(JST)~2015/10/24 5:00(JST)に開催されました。
今回も個人で参戦。結果は340点で168位でした。
参加チームは356チームいたようですので、真ん中よりは良い順位で良かったです。
解けた問題3問をWriteupとして書いておきます。
Slogans (Trivia 50)
問題は EKO{ekopartyslogan2008_ekopartyslogan2009}。
EKOPARTYのSloganをググる。
ここに書いてあった。
http://www.kungfoosion.com/2010/05/inventa-el-slogan-de-la-ekoparty.html
2008年が「Vi root y entre」。
2009年が「What if r00t was one of us?」。
EKO{Vi root y entre_What if r00t was one of us?}
SSL Atack (Trivia 90)
問題は Name of one of the SSL attacks presented at ekoparty。
EKOPARTYのSSL Atackについてググる。
ここに3種類書いてあった。
http://dandylife.net/blog/index.php/2014/08/attacks-against-ssltls-beastcrimebreach/
この3種類を次々に入れてみる。
・BEAST
・CRIME
・BREACH
EKO{BEAST}
XOR Crypter (Crypto 200)
問題は以下の暗号スクリプトで作成した暗号文「CjBPewYGc2gdD3RpMRNfdDcQX3UGGmhpBxZhYhFlfQA=」を復号するというもの。
import struct import sys import base64 if len(sys.argv) != 2: print "Usage: %s data" % sys.argv[0] exit(0) data = sys.argv[1] padding = 4 - len(data) % 4 if padding != 0: data = data + "\x00" * padding result = [] blocks = struct.unpack("I" * (len(data) / 4), data) for block in blocks: result += [block ^ block >> 16] output = '' for block in result: output += struct.pack("I", block) print base64.b64encode(output)
XORは逆算は簡単なので、逆算して復号するスクリプトを書く。
import struct import base64 enc = 'CjBPewYGc2gdD3RpMRNfdDcQX3UGGmhpBxZhYhFlfQA=' dec = base64.b64decode(enc) units = [] for i in range(0, len(dec)/4): units += struct.unpack("I", dec[i*4:(i+1)*4]) result = [] for unit in units: result += struct.pack("I", unit ^ unit >> 16) str = "" for c in result: if c != '\x00': str += c print str
EKO{unshifting_the_unshiftable}