Rating:

# CSAW CTF 2018: Algebra

## Description

This was a challenge in the Misc category with the following description:

**Are you a real math wiz?**

`nc misc.chal.csaw.io 9002`

On connecting to the server, we receive an equation:

`4 - X = 55`

`What does X equal?:`

If we solve the equation, we get a new one. The idea is to solve for X till we (hopefully) get the flag.

## Solution

My initial thought was to write my own solver in python. However, a quick Google search revealed a nice library, **SymPy**, that eases the process of calculation.

The script, **algebra.py**, has the code to solve the challenge using SymPy. I also used the **pwn** library for handling the netcat connection with the server.

The challenge was relatively straightforward; I only had to spend a little bit of time reading the SymPy documentation to ensure that my inputs were in the correct format for the module. Code flow is as follows:

- Use pwn to connect to the server and receive the input
- Perform some pre-processing to get the equation (in string format) from the input
- Split the string to the left hand side (L.H.S) and right hand side (R.H.S) of the equation
- Convert the L.H.S and R.H.S from string to a SymPy expression using Sympy's parse_expr()
- Solve the equation using SymPy's Eq and solve functions
- Send the result back to the server. Note: When the solution is 0 or 1, SymPy converts it into Boolean True/False so you have to change it before sending.
- Repeat

## Flag

flag{y0u_s0_60od_aT_tH3_qU1cK_M4tH5}

Original writeup (https://github.com/ctf-epfl/writeups/tree/master/csaw18/algebra).