# [EN] ASAP ###### tags:`Writeup` `Pwn` `English` > [name=FlyDragon] ## Background knowledge - pwntools ## Step.1 `nc lotuxctf.com 10000` or check`server.py` This challenge consists of two rounds: - Round 1:guess a number - Round 2:math questions ## Step.2 Since you need to complete two rounds within one minute, it's not possible to solve this challenge by manual input. Instead, use `pwntools` to solve this challenge. ```python= from pwn import * r = remote("lotuxctf.com", 10000) ``` ## Step.3 After guessing the number in Round 1, you will receive a response telling you whether your guess is too big or too small. Binary search is a great choice to complete Round 2. ```python= while not number_found: #check the response and adjust leftmost/rightmost if("lower" in response): high_num = int(guess) elif("higher" in response): low_num = int(guess) #guess the middle number guess = str((high_num+low_num) // 2) print(guess) r.sendline(guess.encode()) #break the loop after find answer response = r.recvline().decode() print(response, end='') if "clear" in response: number_found = True ``` ## Step.4 Use a for loop to solve Round 2. ```python= for i in range(101): question = r.recvuntil(b'=')[:-1].decode() ans = eval(question) print(f"Question{i+1}:"+question+f"={ans}") r.sendline(str(ans).encode()) ``` ## Solve script ```python= from pwn import * r = remote("lotuxctf.com", 10000) print(r.recvline().decode()) low_num = 0 high_num = 10000000 guess = 0 number_found = False response = "" while not number_found: if("lower" in response): high_num = int(guess) elif("higher" in response): low_num = int(guess) guess = str((high_num+low_num) // 2) print(guess) r.sendline(guess.encode()) response = r.recvline().decode() print(response, end='') if "clear" in response: number_found = True print(r.recvline().decode(), end='') for i in range(101): question = r.recvuntil(b'=')[:-1].decode() ans = eval(question) print(f"Question{i+1}:"+question+f"={ans}") r.sendline(str(ans).encode()) print(r.recvline().decode()) r.close() ``` {%hackmd M1bgOPoiQbmM0JRHWaYA1g %}