# UMassCTF_2022-quickmaths#### Script solution by using pwntools## Question:nc 34.148.103.218:1228，solve 1000 of math problems. Easy or hard? Up to you.
## Solve:1. use netcat to connect the server
```linuxnc 34.148.103.218:1228```
You will get：
```linuxYou must solve 1000 of these math problems that are outputted in the following format {number} {operation} {number} to get the flag. Division is integer division using the // operator. The input is being checked through python input() function. Good luck! 
96 * 51```
### Analysis
Server was sending mathematical calculations that had to be calculated, and the input is being checked through python input() function. 
#### What does this represent?
My goal is to find a way to get the mathematical questions, and after doing calculations on the questions, send them back to the server to solve a question. as long as the process is looped 1000 times, I think we can get the Flag.Sounds easy :)
### Pwntools script:
 ```pythonfrom pwn import *HOST = "34.148.103.218"PORT = 1228
def conn(): #connect to server    r = remote(HOST, PORT)     print(r.recvuntil(b'!'))    r.recvline()    r.recvline()    return r
r = conn()count = 1
while count <= 1000:    try:                print('{0}/1000'.format(count))              question = r.recvline()        print(str(question))        break_question = question.split(b" ")        first = int(break_question[0])        second = int(break_question[2])        # print('first',first)        # print('sec',second)        # print('symbol', break_question[1])        if break_question[1] == b'-':            result = str(first - second)            print(result)            r.sendline(result.encode())         if break_question[1] == b'*':            result = str(first * second)            print(result)            r.sendline(result.encode())         if break_question[1] == b'+':            result = str(first + second)            print(result)            r.sendline(result.encode())         if break_question[1] == b'//':            result = str(first // second)            print(result)            r.sendline(result.encode())        r.recvline()        count += 1    except:        r = conn() # Server side TIMEOUT         count = 1 # restart             flag = r.recvline()print(flag)```## Running the script:.![](https://github.com/qq96932100/UMassCTF_2022-quickmaths/blob/main/img/script_running.png?raw=true)
## Get The Flag:.![](https://github.com/qq96932100/UMassCTF_2022-quickmaths/blob/main/img/flag.png?raw=true)
## EOFError?In the process of solving this problem, script always be interrupted due to EOFError issue, it's seems like server timeout. So i figure out this problem by `remote` to reconnect when the error occured.
![](https://backstage.headout.com/wp-content/uploads/2021/04/ezgif-2-423490eb1f31.gif")