SEC-T CTF Writeup

この大会は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}