この大会は2018/9/13 16:00(JST)~2018/9/14 23:00(JST)に開催されました。
今回もチームで参戦。結果は 255点で463チーム中54位でした。
自分で解けた問題をWriteupとして書いておきます。
Sanity check (Misc)
https://kiwiirc.com/client/irc.freenode.net:+6667/#sect-ctfにアクセスすると、フラグが表示されていた。
SECT{SECT_CTF_2018}
Matry0ska1 (Crypto)
離散対数問題。普通にsageで解くだけ。
# solve.sage import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('crypto.sect.ctf.rocks', 4444)) data = s.recv(1024) data += s.recv(1024) print data data = data.split('\n') p = int(data[-4].split(' = ')[1]) g = int(data[-3].split(' = ')[1]) y = int(data[-2].split(' = ')[1]) R = IntegerModRing(p) x = discrete_log(R(y), R(g)) print x s.sendall(str(x) + '\n') data = s.recv(1024) print data
$ sage solve.sage sys:1: RuntimeWarning: not adding directory '' to sys.path since everybody can write to it. Untrusted users could put files in this directory which might then be imported by your Python code. As a general precaution from similar exploits, you should not execute Python code from this directory _ ((")) --- Gimme exponent pl0x / \ ( (@) ) \__(__/ p = 122488473105892538559311426995019720049507640328167439356838797108079051563759027212419257414247 g = 2 g^x = 78188489369980984629648119596447562374779391545438251587456851215272459452777015193195179446022 : 3579341009338541976776530063 SECT{Ru$$ian_D0LLZ_h0lDs_TH3_S3cR3T}
SECT{Ru$$ian_D0LLZ_h0lDs_TH3_S3cR3T}
Shredder (Misc)
FTK Imagerでimgファイルを開き、flag.txtを抽出する。1バイトの鍵のXORで暗号化されているのかもと思い、ブルートフォースで復号する。
with open('flag.txt', 'rb') as f: data = f.read() for key in range(256): flag = '' for i in range(len(data)): flag += chr(ord(data[i]) ^ key) print key, flag
SECT{1f_U_574y_r1gh7_wh3r3_U_R,_7h3n_p30pl3_w1ll_3v3n7u4lly_c0m3_70_U}