Tags: static blackbox 

Rating: 2.0

# Riskv and Reward (reversing, 80p)

> open-source all the things!!!

We solved this task in a fun way. Running `file` command on the supplied binary informed us that it's an ELF for
RISC-V architecture. We couldn't run it directly on our computer and installing an emulator was annoying (it didn't work
for some reason). So, we solved it in a blackbox way!

Running `strings -n 20 riskv_and_reward` gave us only one string:
```
tjb3csFt0rrutrh_wiv5__fi}k_1ih`{xIcrhsoyBmyw1CyT3rvxStT_jq40_zrq(
```

Although it seems quite messed up, we quickly noticed it has some resemblance to the flag format: it has two curly braces,
and all the capital letters from `BITSCTF`. It seems it was permutated in some way. So, the only thing left to do was
reversing the permutation. Running `hexdump` on the binary, we found an interesting part right after the aforementioned
string:
```
00001080 28 00 00 00 21 00 00 00 2f 00 00 00 34 00 00 00 |(...!.../...4...|
00001090 2d 00 00 00 36 00 00 00 06 00 00 00 1f 00 00 00 |-...6...........|
000010a0 25 00 00 00 3b 00 00 00 29 00 00 00 03 00 00 00 |%...;...).......|
000010b0 37 00 00 00 3e 00 00 00 1b 00 00 00 05 00 00 00 |7...>...........|
000010c0 22 00 00 00 13 00 00 00 14 00 00 00 3a 00 00 00 |"...........:...|
000010d0 31 00 00 00 30 00 00 00 1a 00 00 00 10 00 00 00 |1...0...........|
000010e0 08 00 00 00 23 00 00 00 07 00 00 00 24 00 00 00 |....#.......$...|
000010f0 3c 00 00 00 2c 00 00 00 00 00 00 00 18 00 00 00 |<...,...........|
00001100 43 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |C...............|
```
We noticed every number appears just once, so this was probably a transposition table. From now on, we had to just write a
simple script to apply the permutation to get the flag.

Original writeup (https://github.com/p4-team/ctf/tree/master/2017-02-04-bitsctf/riskv_and_reward).