Rating:
# Affinity CTF 2019 - F-word
* **Category:** Misc
* **Points:** 200
## Challenge
### Description
```
^^^^!^^^^-A?--&-----&&^^^&^!^^^-A?^&!^^^^^-A?
--&^^!^^-----A?&-!^^^^^-A?^^&^!^^^^^-A?&^!^^^-A?
^^&!^^^-A?---&-!^---A?&^!^------A?&---!^--A?&--
!^-----A?&^^!^^^--A?&^^^^^^^^^^^^&^^^&^!^^^-A?^^
^&-------------&-!^^^--A?--&^^^!^^^^^-A?^&---!^
---A?--&--------&-----&^!^---A?^&^!^^^--A?^&^!^^
^^^--A?^&^!--^^^A?^&!^^^^^-A?--&^^^^^^^^^^^^^^&^
^^^^&-!^---A?-&&&^^!^^---A?*&
```
## Solution
When I looked at this, immediately I thought of the esoteric programming language [Brainfuck](https://en.wikipedia.org/wiki/Brainfuck).
I knew that this had to be encoded somehow, so I began to substitute specific characters for characters in BrainFuck.
I figured this out by going to this [bf_encoder](https://copy.sh/brainfuck/text.html) and typing the beginning of the flag AFFCTF{
The output given was:
```
----[---->+<]>++.+++++..---.>-[--->+<]>-.[----->+<]>++.>--[-->+++++<]>.
```
This matched:
```
^^^^!^^^^-A?--&-----&&^^^&^!^^^-A?^&!^^^^^-A?--&^^!^^-----A?&
```
Using substitution, I learned what each character corresponded to:
```
^ = -
! = [
- = +
? = ]>
A = <
& = .
```
NOTE: The * at the end notifies that it is the end of the flag.
Decoding the little portion above resulted in:
```
----[----+<]>++.+++++..---.-[---+<]>-.[-----+<]>++.--[--+++++<]>.
```
Notice that the ouput does not match exactly, but that is because I did not know the syntax of Brainfuck. Every time there is a switch going from `+` to `-` or `-` to `+`, there must be a `>` in between. Also, another case was putting a `>` after `.` sometimes before `[`.
I never did understand why the second case was needed, but trial and error proved to be a success.
So using the [bf_encoder](https://copy.sh/brainfuck/text.html) and [bf_emulator](https://copy.sh/brainfuck/) to run the code, I was able to come up with this decoded text after some trial and error.
```
----[---->+<]>++.+++++..---.>-[--->+<]>-.[----->+<]>++.>--
[-->+++++<]>.+[----->+<]>--.-[----->+<]>.>-[--->+<]>--.[--->+<]
>+++.+[->+++<]>.-[->++++++<]>.+++[->++<]>.++[->+++++<]>.--
[--->++<]>.------------.---.>-[--->+<]>---.+++++++++++++.+
[--->++<]>++.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.-
[->+++<]>-.-[--->++<]>-.-[----->++<]>-.-[++>---<]>-.[----->+<]
>++.--------------.-----.+[->+++<]>+...>--[-->+++<]>.
```
Run this in the [bf_emulator](https://copy.sh/brainfuck/)
### Flag
```
AFFCTF{JuSt_4n0theR_BrainF-w0rd_!!!}
```