l33t


Solution

Honestly, at the first place i don't even know what language is this hahaha

After some translation by Google, i understand that this challenge need us to convert the leet code to a normal readable text.

Let say the challenge give m4+h , we need to send math as the input.

The catch is we need to solve all 50 question in 5 seconds, i think.

So we need to subtitute those leet character to alphabet.

For example,

3 is e

! is i

+ is t

and so on..

solve.py
from pwn import *

r = remote('ctf.mf.grsu.by', 9006)
count = 0
while True:
    r.recvuntil(b'/50')
    byte_string = r.recv().strip().decode('utf-8')
    if 'grodno' in byte_string:
        print(byte_string)
    print(byte_string)

    decode_leet = []

    for byte in byte_string:
        if byte.isdigit():
            if byte == '0':
                byte = 'o'
            if byte == '1':
                byte = 'l'
            if byte == '3':
                byte = 'e'
            if byte == '4':
                byte = 'a'
            decode_leet.append(byte)
        else:
            if byte == '!':
                byte = 'i'
            if byte == '+':
                byte = 't'

            decode_leet.append(byte)

    joined_leet = ''.join(decode_leet)
    print(joined_leet)

    r.sendline(joined_leet)
    count += 1

    if count == 50:
        print(r.recv())
        print(r.recv())
        print(r.recv())
        break

Upon running the script, we retrieve a flag after completed 50 questions.


Flag

grodno{d5a410leet_1s_a_system_0f_modified_spellings++6&0k!0fda14}

Last updated