\u200e\u0020

V1t CTF 2025CryptoWriteup by @xabito

Attachments

Recon

When this challenge appeared on the platform, it seemed to lack both a title and a description:

Challenge

By examining the raw request, we discover that the actual challenge name consists of two Unicode characters: \u200e (the left-to-right mark, or LRM), and \u0020 (a regular space).

We are also provided with a file that appears to be empty at first glance, but actually contains numerous space and tab characters:

$ xxd txt
xxd txt
00000000: 2020 2009 0909 2009 0920 0d0a 090d 0a20     ... .. .....
00000010: 2020 2020 2009 0920 2020 090d 0a09 0d0a       ..   ......
00000020: 2020 2020 2009 0909 2009 2020 0d0a 090d       ... .  ....
00000030: 0a20 2020 2020 0909 0909 2009 090d 0a09  .     .... .....
00000040: 0d0a 2020 2020 2020 0909 2020 2009 0d0a  ..      ..   ...
00000050: 090d 0a20 2020 2020 0920 0909 0909 090d  ...     . ......
00000060: 0a09 0d0a 2020 2020 2009 0920 2020 0909  ....     ..   ..
00000070: 0d0a 090d 0a20 2020 2020 2009 0920 0920  .....      .. .
00000080: 200d 0a09 0d0a 2020 2020 2009 0920 0909   .....     .. ..
00000090: 0920 0d0a 090d 0a20 2020 2020 0909 0920  . .....     ...
000000a0: 0920 200d 0a09 0d0a 2020 2020 2009 2009  .  .....     . .
000000b0: 0909 0909 0d0a 090d 0a20 2020 2020 0909  .........     ..
000000c0: 0920 2009 090d 0a09 0d0a 2020 2020 2020  .  .......
000000d0: 0909 2020 0909 0d0a 090d 0a20 2020 2020  ..  .......
000000e0: 2009 0920 2009 090d 0a09 0d0a 2020 2020   ..  .......
000000f0: 2009 2009 0909 0909 0d0a 090d 0a20 2020   . ..........
00000100: 2020 2009 0920 0920 200d 0a09 0d0a 2020     .. .  .....
00000110: 2020 2009 0920 0909 0920 0d0a 090d 0a20     .. ... .....
00000120: 2020 2020 0909 0909 2020 090d 0a09 0d0a      ....  ......
00000130: 2020 2020 2009 0909 2009 2020 0d0a 090d       ... .  ....
00000140: 0a20 2020 2020 0909 2009 2020 200d 0a09  .     .. .   ...
00000150: 0d0a 2020 2020 2020 0909 2020 2009 0d0a  ..      ..   ...
00000160: 090d 0a20 2020 2020 0909 2009 0909 200d  ...     .. ... .
00000170: 0a09 0d0a 2020 2020 2009 0920 2009 0909  ....     ..  ...
00000180: 0d0a 090d 0a20 2020 2020 0909 0909 0920  .....     .....
00000190: 090d 0a09 0d0a 2020 0d0a 0d0a 0d0a 0d0a  ......  ........

Exploitation

When you encounter a file that uses only two distinct types of characters, it’s reasonable to suspect they represent binary digits—0 and 1. Typically, the first step is to determine which character corresponds to which bit. Since there are only two possibilities, you can quickly try both combinations to identify the correct mapping.

Flag capture

Using this CyberChef recipe, we can properly decode the file. The process is slightly more involved than simply replacing spaces and tabs, as the challenge authors added some tricks: characters are separated by \r\n1\r\n, and extra left padding was added to each character’s binary representation.

Flag: v1t{1_c4nt_s33_4nyth1ng}