Gambler
Flag: CCTF{GerolamoCardano_4N_itaLi4N_p0lYma7H}
from Crypto.Util.number import *
import os,hashlib,itertools
os.environ['PWNLIB_NOTERM'] = '1'
from pwn import *
from string import printable
printable = list(printable)
printable.remove('\n')
printable.remove('\x0b')
printable.remove('\x0c')
printable.remove('\t')
printable.remove(' ')
def powbuster(method,target,length):
hash = eval(f"hashlib.{method}")
for possible in itertools.combinations(printable,length):
possible = ''.join(possible).encode()
val = hash(possible).hexdigest()[-6:]
if val == target:
return possible
p = remote('05.cr.yp.toc.tf', 33371)
p.recvuntil(b"Please submit a printable string X, such that ")
method = p.recvuntil("(")[:-1].decode()
p.recvuntil("= ")
target = p.recvuntil(" ")[:-1].decode()
p.recvuntil("len(X) =")
length = int(p.recvline())
print(method,target,length)
ans = powbuster(method,target,length)
print(ans)
p.sendline(ans)
p.interactive()Last updated
Was this helpful?