# polygl0ts

### EPFL's CTF team # 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}