Rating:

Python script on server;
- Takes number from user
- Calculates sha512 of (number | hex(flag) )
- Sends sha512 hash to user

If we send 0 , response will be correct hash of flag. Then find each digit one by one.

```
from pwn import *

correct_hash = "2c7b44d69a0f28798532e4bb606753128969e484118bd0baa215c6309ce6dc016c9a5601471abf4c556c0dc5525eb4144078a761a6456c919d134be8a10c64a0"

def loop(n,exp):
highest = 0
add = (16**(exp-1))
for i in range(16):
r = remote("35.185.178.212","33337")
r.recvuntil("Number:")
r.sendline(str(n))
r.recvline()
resp = r.recvline()
r.close()
#print resp
if(resp[:-1] == correct_hash):
print "== " + str(i)
highest = n
n += add
#print n
return highest

exp = 1
n = 0
#exp = 48
#n = 104624803266259438006235328512812865160381277951592066685
while True:
n = loop(n,exp)
#hex(n) would be flag
print "n = " + hex(n)
exp += 1

#ISITDTU[bit_flipping_is_fun}
```