Home HackyEaster 2017 Teaser
Writeup
Cancel

Teaser

Challenge

  1. Solve the riddles and get a solution fragment from each.
  2. Combine all the fragments in the right manner.
  3. Decode the result to get the final solution string.
  4. Sign-Up on Hacking-Lab, if you don’t have an account yet.
  5. Submit your solution in Hacking-Lab HERE.
  6. Wait for April 4, when HackyEaster 2017 starts!

Solutions

Riddle 1

MBD2A !ysaep ,ysaE

Reverse: Easy, peasy! A2DBM

Riddle 2

UGllY2Ugb2YgY2FrZSEgWlhHSUQ=

b64 decode: Piece of cake! ZXGID

Riddle 3

One for free here: 404 - not found!

invisible text on webpage: One for free here: 404 - not found! XIZLS

Riddle 4

1
2
3
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}
k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(
new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('0(\'1\');',2,2,'alert|VYGY6'.split('|'),0,{}))

run the javascript: VYGY6

Riddle 5

1
2
3
4
5
3a3ea00cfc35332cedf6e5e9a32e94da
9d5ed678fe57bcca610140957afab571
f09564c9ca56850d4cd6b3319e541aee
5dbc98dcc983a70728bd082d1a47546e
7fc56270e7a70fa81a5935b72eacbe29

md5: EBQSA

Riddle 6

1
--- -. . / -- --- .-. . / .... . .-. . ---... / .--- .- --- -- -.--

morse code: ONEMOREHERE: JAOMY

Riddle 7

Hwldp wx, Euxwh! QYAVL

ROT23: Etiam tu, Brute! NVXSI

Riddle 8

1
84 97 107 101 32 116 104 105 115 58 32 71 89 53 84 70

ascii: Take this: GY5TF

Riddle 9

Just a bit: /2mi4AMj

bit.ly: 5DFME

Riddle 10

No Comment

HTML comment: ` `

Riddle 11

1
2
3
πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘»πŸ‘½πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘½πŸ‘½πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘½πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘½πŸ‘½πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘»πŸ‘»πŸ‘½
πŸ‘»πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘»πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘½πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘½πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘½πŸ‘»
πŸ‘½πŸ‘»πŸ‘½πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘»πŸ‘½πŸ‘½πŸ‘½πŸ‘»πŸ‘½πŸ‘»πŸ‘»πŸ‘½πŸ‘»πŸ‘½πŸ‘½

Binary: CONGRATS! N5XGK

Riddle 12

1
2
697c611778601371647d12177e7d060572
3133333731333337313333373133333731

xor the strings together:

1
2
3
4
5
6
7
8
9
10
11
a="697c611778601371647d12177e7d060572"
b="3133333731333337313333373133333731"
out=''

for i in range(0,len(a),2):
    c = int(a[i:i+2],16)
    d = int(b[i:i+2],16)

    out += chr(c^d)

print out

xor: XOR IS FUN! ON52C

Riddle 13

URER LBH TB: MJX4E

ROT13: HERE YOU GO: ZWK4R

Riddle 14

1
2
3
4
5
6
7
8
9
10
11
12
13
89504E470D0A1A0A0000000D494844520000001D0000000708020000007BBCD1A5000000017352474200AECE1CE90
000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000001874455874536F
667477617265007061696E742E6E657420342E302E36FC8C63DF000001AA4944415428534D513DC8416118BD7E4A1
9180C0665A0582C8C7E22DF20C5480A130629060CF29792C16CB06293C82283C2F0C562540693C94F297F2983FB9D
EBF9BEDB77A673CE7DEE799FF3BE0CFB81C160904824C4098542C1E17098CDE672B90C399D4E9D4EA740208846A39
BCD2693C9300CF3F5079A29168B56ABD5E572B5DBEDDF5C954A85B9D3E944D2EBF5D66AB5DBEDF67EBF5BADD6EBF5
1A8D4676BB1D9F7ABD9EDFEF877FBFDFE3F1782E97BB5EAFF0B1473A9D063F1C0E1A8D86CB1D8FC7D8CBE3F1341A0
DC8C964A2502840FE83CF050987C3642693C96AB54A1C558810B8DC4824321C0E178B85CD66836C369BD80244A7D3
A194DBED7E3C1E8893CBE5E804743A1DEE57964DA552F57A1D64B7DB994C2632095CAE4C260B8542C160502A95AED
7EBC160100804E05F2E97E3F1882054E6F7DDEFF770CEE73378369BA5DCE7F3899B04E1C174BBDD582CF6FD01162F
954AD84EA9542E974B9A108BC5FF7301AD564B2F91CFE729174033BC1BF17EBFCFF87CBEF97C4E7ABBDDEAF57A90D
96C66341A3FA519FE5AD56A35A44824C2D99F71B652A9F0B9ABD5CA62B1604028142612891FA2F7838B729D41E800
00000049454E44AE426082

turned out to be hex representation of png image, convert back:

1
2
3
4
5
6
import binascii

ct = '89504E470D0A1A0A0000000D494844520000001D0000000708020000007BBCD1A5000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000001874455874536F667477617265007061696E742E6E657420342E302E36FC8C63DF000001AA4944415428534D513DC8416118BD7E4A19180C0665A0582C8C7E22DF20C5480A130629060CF29792C16CB06293C82283C2F0C562540693C94F297F2983FB9DEBF9BEDB77A673CE7DEE799FF3BE0CFB81C160904824C4098542C1E17098CDE672B90C399D4E9D4EA740208846A39BCD2693C9300CF3F5079A29168B56ABD5E572B5DBEDDF5C954A85B9D3E944D2EBF5D66AB5DBEDF67EBF5BADD6EBF51A8D4676BB1D9F7ABD9EDFEF877FBFDFE3F1782E97BB5EAFF0B1473A9D063F1C0E1A8D86CB1D8FC7D8CBE3F1341A0DC8C964A2502840FE83CF050987C3642693C96AB54A1C558810B8DC4824321C0E178B85CD66836C369BD80244A7D3A194DBED7E3C1E8893CBE5E804743A1DEE57964DA552F57A1D64B7DB994C2632095CAE4C260B8542C160502A95AED7EBC160100804E05F2E97E3F1882054E6F7DDEFF770CEE73378369BA5DCE7F3899B04E1C174BBDD582CF6FD01162F954AD84EA9542E974B9A108BC5FF7301AD564B2F91CFE729174033BC1BF17EBFCFF87CBEF97C4E7ABBDDEAF57A90D96C66341A3FA519FE5AD56A35A44824C2D99F71B652A9F0B9ABD5CA62B1604028142612891FA2F7838B729D41E80000000049454E44AE426082'

with open('teaser.png', 'w+') as fout:
    fout.write(binascii.unhexlify(ct))

PNG image: AGBTC

Riddle 16

1
2
3
FRIDAY THE THIRTEENTH, 4:00 PM
/([FOR]*)([ID]{2})([^N]*)(.)(.*)/g
$2E$44

regex: IDEN4

Riddle 16

<~<+oue+DGm>FD,5.CghC,+E)./+Ws0B9h&:~>

Base85 decode: DFMFZ

Final Solution

We suspect the solution fragments are part of a base32 encoded string, so we try different possible permutations of the fragments which yield valid outputs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import itertools
import base64
import string

def extend_solution(partialsolution, mychunks):
    ''' try adding different permutations of 4 pieces to current solution, recurse til solution found'''
    for i in itertools.permutations(mychunks, 4):
        t = partialsolution + ''.join(i)
        padded = t +  '=' * (-len(t) % 8)
        oldchunks = mychunks[:]
        try:
            d = base64.b32decode(padded)

            valid = True
            for c in d:
                #if c not in string.printable:
                if not (c.isalnum() or c == ' '):
                    valid = False
                    break

            if valid:
                if len(t) >= 80:
                    print "possible solution: " + d + " (" + t + ")"

                #recursion
                for x in i:
                    mychunks.remove(x)
                extend_solution(partialsolution+''.join(i), mychunks)
        except Exception as e:
            print e
            exit()

        mychunks = oldchunks[:]


chunks= ['A2DBM','ZXGID','XIZLS','VYGY6','EBQSA','JAOMY','NVXSI','GY5TF',
         '5DFME','A43JN','N5XGK','ON52C','ZWK4R','AGBTC','IDEN4','DFMFZ']

print "solving.."
extend_solution('',chunks)

this outputs various possible solutions:

1
2
3
4
5
6
7
8
9
10
11
solving..
possible solution:  a tea3s not haeply s1terone do3er 0f sikky earlve (EBQSA5DFMEZXGIDON52CA2DBMVYGY6JAOMYXIZLSN5XGKIDEN4ZWK4RAGBTCA43JNNVXSIDFMFZGY5TF)
possible solution:  a tea3s not haeply s0lveone do3er 0f sikky easter (EBQSA5DFMEZXGIDON52CA2DBMVYGY6JAOMYGY5TFN5XGKIDEN4ZWK4RAGBTCA43JNNVXSIDFMFZXIZLS)
possible solution:  a tea3s not hacky easterone do3er 0f simply s0lve (EBQSA5DFMEZXGIDON52CA2DBMNVXSIDFMFZXIZLSN5XGKIDEN4ZWK4RAGBTCA43JNVYGY6JAOMYGY5TF)
possible solution:  a tea3s not hacky earlveone do3er 0f simply s1ter (EBQSA5DFMEZXGIDON52CA2DBMNVXSIDFMFZGY5TFN5XGKIDEN4ZWK4RAGBTCA43JNVYGY6JAOMYXIZLS)
[..]
possible solution: one do3s not simply s1ter a tea3er 0f hacky earlve (N5XGKIDEN4ZXGIDON52CA43JNVYGY6JAOMYXIZLSEBQSA5DFMEZWK4RAGBTCA2DBMNVXSIDFMFZGY5TF)
possible solution: one do3s not simply s0lve a tea3er 0f hacky easter (N5XGKIDEN4ZXGIDON52CA43JNVYGY6JAOMYGY5TFEBQSA5DFMEZWK4RAGBTCA2DBMNVXSIDFMFZXIZLS)
possible solution: one do3s not sikky easter a tea3er 0f haeply s0lve (N5XGKIDEN4ZXGIDON52CA43JNNVXSIDFMFZXIZLSEBQSA5DFMEZWK4RAGBTCA2DBMVYGY6JAOMYGY5TF)
[..]
possible solution: one do3er 0f sikky earlve a tea3s not haeply s1ter (N5XGKIDEN4ZWK4RAGBTCA43JNNVXSIDFMFZGY5TFEBQSA5DFMEZXGIDON52CA2DBMVYGY6JAOMYXIZLS)

and best one and our solution is:

1
one do3s not simply s0lve a tea3er 0f hacky easter (N5XGKIDEN4ZXGIDON52CA43JNVYGY6JAOMYGY5TFEBQSA5DFMEZWK4RAGBTCA2DBMNVXSIDFMFZXIZLS)

Flag

one do3s not simply s0lve a tea3er 0f hacky easter