この大会は2017/5/20 9:00(JST)~2017/5/22 9:00(JST)に開催されました。
今回もチームで参戦。結果は574点で620チーム中102位でした。
自分で解けた問題をWriteupとして書いておきます。
Sign In (Misc)
freenodeで#rctf2017チャネルに入る。
09:03 *topic : RCTF{Welcome_To_RCTF_2017}
RCTF{Welcome_To_RCTF_2017}
RSA_sign1 (Crypto)
メッセージと対応するシグネチャがあっていればフラグが表示できそう。
何でもよいので、先にシグネチャを決める。それからメッセージを求め、メッセージから順に指定する。
#!/usr/bin/env python import socket import rsa with open('public.pem') as f: pub_pem = f.read() pub_key = rsa.PublicKey.load_pkcs1(pub_pem) sig = 'hogehoge' blocksize = rsa.common.byte_size(pub_key.n) encrypted = rsa.transform.bytes2int(sig) decrypted = rsa.core.decrypt_int(encrypted, pub_key.e, pub_key.n) clearsig = rsa.transform.int2bytes(decrypted, blocksize) sep_idx = clearsig.index('\x00', 2) msg = clearsig[sep_idx+1:] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('rsasign1.2017.teamrois.cn', 3000)) data = s.recv(256) print data print msg s.sendall(msg + '\n') data = s.recv(256) print data print sig.encode('hex') s.sendall(sig.encode('hex') + '\n') data = s.recv(256) print data
このコードを実行したらフラグを得られた。
RCTF{your_fir5t_sig_test}