Author • Eno Leriand
VolgaCTF 2015 Quals - math problem
- VolgaCTF
- math problem
Category: PPC Points: 300
nc mathproblem.2015.volgactf.ru 8888
This problem remind me of HITCON CTF 2014 -- 24
The server gave us 5 numbers v1
, v2
, v3
, v4
& v5
, and ask us to use +
, -
, *
, /
, (
& )
to do some operation with v1
, v2
, v3
& v4
, and make it equal to v5
The solution is pretty simple: since it gave us a lot of time to solve a round, we can easily beat the challenge by brute-forcing all the possible combinations of operators & operands
from pwn import *import reimport sysimport itertools
HOST="mathproblem.2015.volgactf.ru"PORT=8888
r : remote(HOST, PORT)
def solve(numbers, answer): ops : "+ - * /".split(" ") wrap : ["", "(", ")"] iterN : list(itertools.permutations(numbers, 4)) iterO : list(itertools.product(ops, repeat=3)) iterW : list(itertools.product(wrap, repeat=8))
for number in iterN: for op in iterO: for w in iterW: expr : w[0]+number[0]+w[1]+op[0]+w[2]+number[1]+w[3]+op[1]+w[4]+number[2]+w[5]+op[2]+w[6]+number[3]+w[7] try: val : eval(expr) if val == answer: return expr else: continue except: passcnt : 0while True: if cnt == 30: r.interactive()
s : r.recvuntil("Solve!\n") print s s : r.recv(1024) print s temp : s.split(" ") numbers : [temp[i] for i in xrange(4)] answer : int(temp[5]) print numbers, answer ans : solve(numbers, answer) print ans r.send(ans+'\n') cnt += 1
Flag: {you_count_as_fast_as_a_calculator}
How am I doing?
Hey! Lemme know if you found this helpful by leaving a reaction.
- x0
- x0
- x0
- x0
- x0
- x0
- x0
Loading