0CTF/TCTF 2021 Quals Writeup

この大会は2021/7/3 11:00(JST)~2021/7/5 11:00(JST)に開催されました。
今回もチームで参戦。結果は354点で464チーム中71位でした。
自分で解けた問題をWriteupとして書いておきます。

welcome (Misc)

Discordに入り、#announcementsチャネルのメッセージを見るとフラグが書いてあった。

flag{welcome_to_0ctf/tctf_2021_have_fun}

checkin (Crypto)

$ nc 111.186.59.11 16256
Show me your computation:
2^(2^10830857) mod 16373219563917465819540920827363515510995924488576322861597448304510474363567568370093840638392518235969100632857761716685479129334201437603902270147060042588886761123765192079297092059815274163435021310735356119288527597479072418590196159953314220176397555975324821477222222372807144992336580852400471677027 = ?
You have 10 seconds. gogogo!
Your answer: 

この計算に答えればよいが、短時間で計算できるようにする必要がある。modの値が素因数分解できれば可能だが。。。sageを使えばうまく計算してくれるので、sageで計算し答える。

#!/usr/bin/sage
import socket

def recvuntil(s, tail):
    data = ''
    while True:
        if tail in data:
            return data
        data += s.recv(1)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('111.186.59.11', 16256))

data = recvuntil(s, 'answer: ')
print data[:-1],
formula = data.split('\n')[1].split(' = ')[0]
n = int(formula.split(' ')[-1])
x = int(formula.split('^')[-1].split(')')[0])

a = 2^x
ans = pow(2, a, n)
print str(ans)
s.sendall(str(ans) + '\n')
data = recvuntil(s, '\n').rstrip()
print data
data = recvuntil(s, '\n').rstrip()
print data

実行結果は以下の通り。

Show me your computation:
2^(2^10660050) mod 33416793971820374033606972701710647087071532878840628144977747677148479043545893440101688964234929668333163379644206973397888200017191640437705590698223843832936901553781510439010710889310863111956114817314771822675321069961338630991532987726015393136745431186371294141143307000940912215198824801874633393693 = ?
You have 10 seconds. gogogo!
Your answer: 19439224788604028708881104870769043056478979428239405508224698336406892670078527632556278679597315071646022632275901172861201208620468146993999095238001850421408485307548920080807319295224428491816281225817294206407232583991424393013394347944188929773941090178498852580283160747751052125059985716348426367264
Correct!
Here is your flag: flag{h0w_m4ny_squar3s_can_u_d0_in_10_sec0nds?}
flag{h0w_m4ny_squar3s_can_u_d0_in_10_sec0nds?}

zer0lfsr- (Crypto)

サーバの処理概要は以下のとおり。

・PoW
・以下を2回繰り返し
 ・1, 2, 3から選択して入力
  →1回使用したら、2回目は使用できない。
 ・msk: 64bitランダム整数
 ・lfsr = zer0lfsr(msk, idx)
 ・以下を5回繰り返し
  ・keystream = ''
  ・以下を1000回繰り返し
   ・b = 0
   ・以下を8回繰り返し
    ・b = (b << 1) + lfsr.next()
   ・keystreamにchr(b)を連結
  ・keystreamを表示
 ・hintでmskのsha256のhexdigestを表示
 ・mskを当てる。
・2回mskを当てたら、フラグが表示される。

lfsrの問題なので、よく使うz3で解く。2つのlfsrの仕組みに対して解く必要があるので、計算が比較的簡単な1と3を選択する。条件を入れすぎるとTimeoutするため、正解率が少し下がるが、128bitのみのチェックにする。

import socket
import string
import itertools
from hashlib import sha256
from Crypto.Util.number import *
from z3 import *

def recvuntil(s, tail):
    data = ''
    while True:
        if tail in data:
            return data
        data += s.recv(1)

def _prod(L):
    p = 1
    for x in L:
        p *= x
    return p

def _sum(L):
    s = 0
    for x in L:
        s ^= x
    return s

def n2l(x, l):
    b = [''] * l
    for i in range(l):
        b[i] = (x >> (l - i - 1)) & 1
    return b

class Generator1:
    def __init__(self, key):
        assert len(key) == 64
        self.NFSR = key[: 48]
        self.LFSR = key[48: ]
        self.TAP = [0, 1, 12, 15]
        self.TAP2 = [[2], [5], [9], [15], [22], [26], [39], [26, 30], [5, 9], [15, 22, 26], [15, 22, 39], [9, 22, 26, 39]]
        self.h_IN = [2, 4, 7, 15, 27]
        self.h_OUT = [[1], [3], [0, 3], [0, 1, 2], [0, 2, 3], [0, 2, 4], [0, 1, 2, 4]]

    def g(self):
        x = self.NFSR
        return _sum(_prod(x[i] for i in j) for j in self.TAP2)

    def h(self):
        x = [self.LFSR[i] for i in self.h_IN[:-1]] + [self.NFSR[self.h_IN[-1]]]
        return _sum(_prod(x[i] for i in j) for j in self.h_OUT)

    def f(self):
        return _sum([self.NFSR[0], self.h()])

    def clock(self):
        o = self.f()
        self.NFSR = self.NFSR[1: ] + [self.LFSR[0] ^ self.g()]
        self.LFSR = self.LFSR[1: ] + [_sum(self.LFSR[i] for i in self.TAP)]
        return o

class Generator3:
    def __init__(self, key):
        assert len(key) == 64
        self.LFSR = key
        self.TAP = [0, 55]
        self.f_IN = [0, 8, 16, 24, 32, 40, 63]
        self.f_OUT = [[1], [6], [0, 1, 2, 3, 4, 5], [0, 1, 2, 4, 6]]

    def f(self):
        x = [self.LFSR[i] for i in self.f_IN]
        return _sum(_prod(x[i] for i in j) for j in self.f_OUT)

    def clock(self):
        self.LFSR = self.LFSR[1: ] + [_sum(self.LFSR[i] for i in self.TAP)]
        return self.f()

class zer0lfsr:
    def __init__(self, msk, t):
        if t == 1:
            self.g = Generator1(n2l(msk, 64))
        elif t == 2:
            self.g = Generator2(n2l(msk, 64))
        else:
            self.g = Generator3(n2l(msk, 64))
        self.t = t

    def next(self):
        for i in range(self.t):
            o = self.g.clock()
        return o

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('111.186.59.28', 31337))

#### PoW ####
chars = string.ascii_letters + string.digits + '!#$%&*-?'
data = recvuntil(s, '\n').rstrip()
print data
proof_tail = data.split(' ')[2][:-1]
digest = data.split(' ')[-1]

for c in itertools.product(chars, repeat=4):
    proof_head = ''.join(c)
    proof = proof_head + proof_tail
    if sha256(proof.encode()).hexdigest() == digest:
        data = recvuntil(s, ':\n').rstrip()
        print data
        print proof_head
        s.sendall(proof_head + '\n')
        break

#### 1st challenge ####
idx = 1
data = recvuntil(s, ': \n').rstrip()
print data
print idx
s.sendall(str(idx) + '\n')

keystreams = []
for i in range(5):
    data = recvuntil(s, 'end\n').rstrip()
    print data
    keystreams.append(data.lstrip('start:::').rstrip(':::end'))

i_keystream = bytes_to_long(keystreams[0])
b_keystream = map(int, list(bin(i_keystream)[2:].zfill(8 * len(keystreams[0]))))

data = recvuntil(s, b'\n').rstrip()
print data
hint = data.split(' ')[-1]

data = recvuntil(s, '\n').rstrip()
print data

x = BitVec('x', 64)
lfsr = zer0lfsr(x, idx)

sol = Solver()

for i in range(128):
    sol.add(lfsr.next() == b_keystream[i])

r = sol.check()
if r == sat:
    m = sol.model()
    msk = m[x].as_long()
    assert sha256(str(msk)).hexdigest() == hint
    print msk
    s.sendall(str(msk) + '\n')
    data = recvuntil(s, '\n').rstrip()
    print data
else:
    exit(1)

#### 2nd challenge ####
idx = 3
data = recvuntil(s, ': \n').rstrip()
print data
print idx
s.sendall(str(idx) + '\n')

keystreams = []
for i in range(5):
    data = recvuntil(s, 'end\n').rstrip()
    print data
    keystreams.append(data.lstrip('start:::').rstrip(':::end'))

i_keystream = bytes_to_long(keystreams[0])
b_keystream = map(int, list(bin(i_keystream)[2:].zfill(8 * len(keystreams[0]))))

data = recvuntil(s, b'\n').rstrip()
print data
hint = data.split(' ')[-1]

data = recvuntil(s, '\n').rstrip()
print data

y = BitVec('y', 64)
lfsr = zer0lfsr(y, idx)

sol2 = Solver()

for i in range(128):
    sol2.add(lfsr.next() == b_keystream[i])

r = sol2.check()
if r == sat:
    m = sol2.model()
    msk = m[y].as_long()
    assert sha256(str(msk)).hexdigest() == hint
    print msk
    s.sendall(str(msk) + '\n')
    data = recvuntil(s, '\n').rstrip()
    print data
else:
    exit(1)

#### get flag ####
data = recvuntil(s, '\n').rstrip()
print data

実行結果は以下の通り。

sha256(XXXX + zQYWFD&d0MGojff7) == 6909e7d1dca09662bd7a83466c06c204b8a8844aea077425f597fd78bea446a8
Give me XXXX:
C7G6
which one:
1
start:::Jk�%TOE�4̾����� ��?���d�V�eL�D�{=ajIm�r9�*M�
                                                       �j�ËP��2�9����.>�=��TӖ��ȿ]���'����^����&܌Κ�ԃ಍&S	�fYL����˕8��Ƈ�1�nkq���{����S�)Ѩ�l3��X,�:d�<6��)���3.��w�D����K���Cg�-�G�W�$'��M?������yI��rl(�����q;:P����i�N� ��kb!{(j�{�iC��r��58��j����0�#)����5���*5'�.�̷o���{U�y*���;�g߭7���{:�Q^8��rȌ<$���)؝B�q����a�����s�O\%�}n�%���ό<�wE�GE�OB��S^54]����0�8d����S���.I��-ڞ�tn�4�����}��K���^�(05`b�Y�=]��HOfa=�.�u_��7�&@!�E(�eBcO�
                                                           S�@<c�I���4�\ԺB��I��ζ����9��e�O����H:R�ד
                      9�~�-Vwі��'C<Bz�rZ�T��KUr��މ�aЂE���0���xt8��֠Crߥ��?S�Z���i�I2<���EH��%��?�?����k�Nc����4�|����':�4j<9��O4�
��[x���Xz�;̂.e7v���
                     +[,�J2XOS5?8���[�JXzmC�2��e���WK�-��v��ls/�C����b����
 _���TA�B�xA=&���A�S3B�%��
�1*,Vh/*c���eb���K�=����z�g��;� �0�3���'�H� �S2�`�}:::end
^[[?62;cstart:::�S�BjsN����F5��̸֭^�w5yf�x0��y�;±�*�a��})����HR){N��Q
                                                                      ��P' ��;|��i%Im�b�B�&T���**�3�;��*��C�*���s!3�|V�b}�����h#��&�K
                                                              :���uK{����%	�d���t�Vg��@C�f+m!���/�ɂ�3�r'�nk������A
                                          �w�-;%�������Ň�a�bǿ��.��U%n=K�
                                                                             6��zk
�w���|�	.)�7
=�͙u��N��[�x���x�3/�z3�ZV/�=wi�1���$S��'��Ch{�V�		"�Xv��
wH�s�]\-��5����C*�Ӱ�]|���dBw�٨�1�������Tb/	�B�#�^�ūI׵�� i4�Ĭ�	�^���>)�Z*�v�f8�?��M����a)94a*c#7��e�Pn&KqL͍���x�l�����n]��I��_�N�\�7�`��@,�NZ�M?�ᩃt�
t�7�j�����6���v�5
                 Ʊ�+��o�l7k����&�Y��n�����2�2�Ё�@��L��t��~hG��A!��U�L
��G9���� H��X���3L�9������X�}���j�����I�U�%G([|�
a+&ꗦ���K��J�SL�R�,t��g'
                           �r�
                              K��0S����\�RYu�Z'������j�M��(�4�o�lr�AI순z��o9JI81>��p��aP71�y�@�:�ll�D*���Z�k�O��
                                        "��%m{"�#���V�>�Zx�0�@z�S��HF��Eu����T����UZ�֚I�=�D-V�ք:v[��q��B�=N$q:�P���x��T@=p���wb�h������be�����3#;W$���/�
"�Pl�:::end
start:::�3�/+�w�/R�z�������i�9oL�.��]�fu�5�֊��h���)Z���%��Ǽ*5>�/��p-�1�k2��+}0~/�9��o��0iii8	�/�>��+����b�꦳e��Qs�)I+]���g!q]n�;�h��W�7���.�*
                                                                        W���	��P���Ӽ/Y���Iů�67��	��y��ö��)W�+�M7�~�+1��ٮ{�Ji���:W9p�L���� 3 nF�R�
   <�^<�2��AK:�����~�*�n�*it�R��8��C��:��1H�?��M~ϝ����N�ji��Zc����M�:x���
�e2�Z]����q`K���Wg��h�Y%�1I�A��e$�c0Z�v�����X��=$'���j���\<p�OG	�WSf�1�3�u
    ��<���Ժ���	r-n��<�=k
                                 ?D�ǩ�.��2����'p
                                                 Dxv_�L�D����M�-�vι�����@���ɶ���d]Ǧ�a�+,��@|��(��dd ��k��x�Q]�;��g��t����?"E�8� B"k�e+�A���}2��N�qum+��y�'6T&���fs��m��0��$4"��̩��N)f��P��G��i�|�[^9�S
Yߪ�����l��<����)�\�s7�Jy�	X�������C+y��\���R���9���2���n
�t 
   /?p]���U�Ax	Q�O`r�hN)��^^��YB�� TF��݌�Q{��H\���:9y�#�/�~
�^���M�k�6��Ӟը$UT���΋�8��{&����#~�VD�C-���N?绋s+�8�5a��� ��EU�Q��Ľ���"��ư/e;Cz�>$
          �ؽk�~�H���T�HY������_����c�Jz��?��O�;7jGu%�s �b�nT�왔�0�}6	��H����o ?!\�'wj:::end
start:::�w��>;��+�PdH����M�����u
                                 .
�����?ؼۻ�)�����L�&�T�~
�r�����,����a�v���Հ�`�  �	}9p�R����7����̌
                       ��V-���).�+er�?k�(�
L�1!_��Y#a�5Er7r=QZ�9
F���xȐ8���m`�Sa�NF
�Ϫ�               he�e?�LRWh��[!֩��Ȕ���~��v@
    6�-��l���l7�v[˹9�0�HH����8���h� ���?���-\坹������
                                                           �S��@s%6��C�
��C�q��u�dN�v�9���@5R�
                         +�
                            \��R��4{X.Pa)�H��C�b���N��Κ��5�ɦ`�#|���,eH
                                                                             &��C��o��hX޻�/�d��`
�>�kxY             �E!�f
      �Y<�j�FQ��>�/�.�xR�\�O
���$
�9�'5P
      �$c�z;�i�o��/�NKȿ�<�ڵB�am����7�b�13r���x�\��
�ꢘ�h��1ŧ[�1�f��©�/����O��˒��Q��
Z�X!��H���c4p�1�@�����>�����f�eE������m<��Z���
"�R�3Ae|-�C5�X��PlA��k.k�P/M^npo�&�ӑ����X���@��̈́��(�h;4���ܬ.��qx���K1)�_LL�gr�����O%\��Ll�����g)�����-O*AI�/a���rc�D�����Q�7�Bf��2�����c����(�!�e�
   �d��?m�������I�h��'����O����z�g]i�}�
                                             h�>#�|E���J��!	�A��b)���bb�Mr3�?���-[�PD��y�	�T�$z����������f�ZӦ�*�5����;�e�j�ʻeKr�M~����nt~����zB�gn��,:::end
��ThA6��D�z����U��?�d)dM@��A�_���~Z�*��i�������Ҳ�Z7�!����K�d�F*��-i�
  גP�}��D�zG ͸�:�g��{�A�UΆl3�ah��\ޅ��;T�Ը2C�w�4����F͜f�s
                                                            9��JTH]�`�z/0gs=Z�aFҖX��E�m���g9��XFq�_�/�s�I����ͯ���F��.P����ޭ%���� �-%���B��E
                                                                 �{5��%���B�/$�W�T�r��uϒ{� �
l���uJ�-����h?�ym�"0�A0�>�h�@Zi��e�R�Eh�)��~m�+4�v( #7<�w�Z�
�K�N���W|���
Q˝�S|�Tx�ꖲ�M�������io�uC2�N��L�&�����|!?�ǟ���Wlɵi�,՗�L�G��]}����������*9΍M���23�vb���}��?��qw��A89��;����ش�cF!����,u|��o��^a����j���}�C�4{/o矊 �v"U��׳#�>qޝ��X�'0�T`���.'U���Vn���C/(�ǟ���8��b0
4��N6vW3�������d�iz�Є�|U�.�>{%�q�q���%��y�
                                              ��s�\�h6�`��ZJ�Õ��h��%�W+1tİI;�������"�[����i�)s-.0�� ؒ1Vǐ����*��я\�0��H���4��3e!V^��xu&k�w���U��8/�J��,�;����F��
               �G��%ğd��0��8	�W5�,��M	��J�N[R���h[r��}'��$�7�^ܡ��5�Zڤ{x>���+�w�\(?=x�3�z�
                          >�%�b����4Q��r�{�u2�2��X�3�U��q���֧���B�����!�$�n���\٪��:::end
hint: bf0f898b813c07c27b41cabb263f17364b95b435c0d05a186eeca9335c61440f
k:
2207923918680507724
Good :)
which one:
3
start:::��
           �-�(z���e�
ću�DT-�B��d���|�|��8����;�jϴƒ���{�+QT�n0X�H�m��Tl��<��%쿿cm�q~FM,
                                             ���&DǺv����%���|�F�.�Z<�q|)ӭ�J?p[�f�
�׳+�P}�zJ���6����B@��4iT��7ݱ	��KC��� �l�0~���(S��M���ħ��E`����'�;�r��Z&�v\;X�ޯ�c��g6)&լ��#B�/����K^���pA�����O���E`��tE��w�mȓ+��-�^�S�׫O�(����"�@Pkh�S�����c}�ʋ5�����~�m��]�{D��ณ\�,�v����#��bY��#����`�����CQ���]��{�l�g�co�:���L{�� z�l��X�����3ʪk9BQ����M�����0	�\�u�\Qm�/N/��#��YM܀o�3T'$UU7}�����k���{(/|��F�����`����(^$1��Q��d��5��B��K�l	��"��U�؟F�U�I�b�h�ݼ�7����@ſX��#G8��p�oA���.�ąԈ�����Y;�t��?���0 �X���np��,7����v�%�v6
                                           }L��g~S+!w~b��
������4�m�-���(43=����T��d™�f9,��&��$��i���!��[�������|�\!!�iT��
                                                                    �����n��+yX�O��I
I:���KhV�vmη!:::end��7ߌȗ8q�KZ�z�vH�7����l&[�����m
start:::w�)��OX����
                    Ԯ���o����m���v�M��w��:��.�Ж{�H/i���sV�p�1R�_�kA̍ڋ?�Ҩv�����R]�f|�'�nZ���%�"5���W�G�����L�������ZY��m�R���#�iQY�i��{L�������
��d�/#~�^|Z�G�M`dƖzXd"�a�y�@�נ�^�;[t;:f��+(� x)�1�1Wb["�ߍo�t�
                                                                 ��& <�r:�L/X����>��r*K\ƕM�ڂ��ϱ-S��[��dd���Ҽ�����ȼ����ig�F�;����D�]Kn���t�l��-�6|��B�Aaex��.��-�۴� ~/�|��N����1�4�_��"��i.��e��
                                              $�1�؛��+l�a܇R�y���K�����[�����=�'�x��"E+s���R�$�T�`n��Y�����������=�S�Ŕ�s-������0[��i>��߽��*Ktrcl����Qs08������~xU[)��o�/��c�˳Q���P��G9L����K|ƾm��0OMT���
                                                            �ݨ$�����`�w蹛j�����6��[��@��]zGyP\�>�ߛ��?�A"�A�����z�$������,�P��)�����|koH�i���{v��K,?�DT5��w��0]60�:��C��հ���J�H[�|R�.���_ߥ1��n���k��
Q��c6�з��vH4�"���b'd�S#�7K�I}:::end}���z�{��B��~%�Ȗ�O�m�H��mFs
start:::ТHT���[�,萺��;l���/����[���D��m�����Z�L y
                                                     /H�u�y}�4&=Q>ž?q|�5�A��[e�ߴ�^����
        ��(hI�D���P�My;� K>p��!27a/�Mks"C�2��b�n�'����q&M��P7�A6�l\��d��ȴ����{������?���l����a�.�"	�S).Iʾ�x��^�%�J���+\T#�����!l��f=��<Դ괸']�����ʭ�O�$Q�����U>��W����ߛ���u��/�V})i��?����m�,��;s���f;��
��(囬>/��F�S,�b��F���n��S5�1;�Pm5�
                                  �R%x60��d��I��e<�����
[�<��6�`f�T &#517507;r+��!+U�fٷ�N����?ʡ�E�.:ۺ^-O���@��y׳��bl�����O�ч�<���rl�Ѧ?���9@��z���Yd�6怓��րx=�\�;]��`���Q,!K��tnϰ>a<Vߊn���a����$�/������:�K��&ܰ��
                                                                        �j��L�N��r�I#lё#
         ��;���_��7��]zݨBޥ<���'��{,���hz+��]oT.��*�]�[ޢN�������#i��g���_n�j�֖F��|hm�\a�������0m���a`�}��N4.X6�y�h��Gdv�
                                           �%m�]����h������+'@B���U����c��6u����,�?�6h?Ѕ���?��(�z�r~]�)� oHU v�*�)i%�!Q�Π�
                                                �Y>�b���'�ƿ�uV�/���-y+����o���>1K���;�ciT������>ͥ��N-�����R�~ej"2N�����H0�T���Rd���L��5��T�<���D�[��2���
�b����'�����,BG%܄�W�s6�q:::end;R�I�A
start:::��'�)ly)�﹄W4�F��%������n���m������MTѠÝ�5'�1W΀�>����?P��bM^�����?�\,���d�l/�Ӵ��RԇW��_����)
u5��
     ���Yl���
             ����ol��_�{f�k�Iy�K��b(�����BI�_t��wG�$�ֆF�ƻ{��ߣ�M���FF��B���3�@�K��l�%,��@��bW��5+�n���|�UU6��S�X7��#���‘kPt|�r���q�H��.;�Am
                                                                     ���p�B	����9�Uy��#
          �u�\��`y��]��7\����a'�w��j+�부��I�LrT�?CM+]
                                                         I��$��m%3�qw<�-��@]���[2�g����'1Â�w\����;��o����k&��ڳv{��xxe~�W��;���'?y����I�����ݧ:Y�\�"�S��8$D���2uxwKf���1.0���e����:µt�
{jE��i�����b_B)����
                       ��	���I��m���oXmg��q��}�����lP(�P�&k��'DN∎������k��3����%_<��R?�^I?h�W��w?����#���yl��ϑCA�_.e�:��Vi��������;m�8H�c�?�eU��46;6ޒ�"����_�L2m�ѷ�9�BK�;�d�����1�Tò��3��4����耤x<��
                                                       % ��6�'�>^��@��I!gS߸6E��z;�*?���b�2k�cW�1,����DI&�X�:�%�ۑ����R���?G��bU���(^�r�ΛpZR�r����/J<0�%���w�y�����Ɖ>S�2��b��zϻzW��OfR�07e�3���<�E���;[�:V6������.����7H#�&A�>@�9�(�[���������i�P��.�
,�����ZNMcNÂ�ۺ?l������č<����QI�����B�eN���a�����
                                                   �:::end
start:::42�*)��.PQ�q���1)i	�Hi(P$f}����Kd���F�ɷ�>S�S�A�Aͻ!��l�9���A�O�1%`��uȘ�$��A��z6�*�VQ4c}�#���?��>Y�>-*�{�2K�3t�{��l]`x��]˕o��
�f��P���V�;Mn^%�����?9ͮ:l����� rlPd�{�;���6��B��0c='��Q��D�2��i�I��z�!��
                                                         gyaym�P
�8������Q������`���ű����6N+s��d��~
        &G/`��<��7	�;Z��p��@��X���9;�_Z�v ��J0�V��+ӫ�K��P��5eԹW�ƻ�d�!�9��|=���6+
X�V�������^7��-��k�YD_���C���z��&��ѣO�]Ǘ�rt%cOa���}��́P4���������!��J��9 5��ϸ��B0NA0��$4P��?����g �ӄI#�v'�2��{"b�m�O5�^{{w�7�I�kC�_�
                                                            O�������>!.�[R+_,�ƒ��3&
       �3CbCf��7�Sk=��-���LfȬBS�eG��Rϵ���k.$���a
����hcJO9Qy;<�����M�ҋ�����|-�z��@^�����۵�f��!�}p��G�
                                                        �.���p����[�T���߬~/<�y9~����I?��v�߭㮝�lҝ~�w�M��`N�\��mbf��*6j���_�V�ڡɨu�F���������.��/��K&�_m��	2�[Ӣ*
             L i�4�"X$n����;üђP�����v������3�N*K�y��N�2��N��m��=����֝�է^/�|�:::end
hint: 8b7017420f67daeb5f18084994c78b543392dfabe45ea32a0ff169a6321c3bea
k:
12564318430730811333
Good :)
flag{we_have_tried_our_best_to_prevent_the_use_of_z3}
flag{we_have_tried_our_best_to_prevent_the_use_of_z3}

Survey (Misc)

アンケートに答えたら、フラグが表示された。

flag{im_curious_have_u_viewed_source_before_filling_out_the_survey}