fireshell 2019 | pwn wp

leakless

  • x86 elf | nx
  • 漏洞 : 栈溢出
  • 利用 :
    • 使用 puts leak libc , 并第二次进入漏洞函数
    • system("/bin/sh") getshell

exp


casino

  • x64 elf | full relro , canary , nx
  • 漏洞:
      1. 格式化字符串
      1. 使用 time(0) 作为随机数种子 , unix 时间戳 10秒内不变
  • 利用过程:
      1. 使用 格式化字符串 修改全局变量 bet 使其大于 1
      1. 使用 cdll 导入 libc 的库 , 从而使猜对99 次后,得到的点数 99 * bet 大于 100 ,满足 点数大于 100 , 获取flag

exp


babyheap

  • x64 elf | nx
  • 功能分析:
    • create , edit , delete , show 正常功能 , 分配的 size 固定为0x60 , 输入的 size 固定为 0x40
    • 特别的限制 : 每个函数有一个 flag 标志 , 使用之后flag = 1 ,限制不能使用
    • delete 函数 会将 create 的函数标志 设置为 false , 使其可再次被使用
    • bak_malloc , 输入的数字 为 1337 时, 可使用后备的malloc 函数, 多分配一次
  • 漏洞:
    • delete函数 uaf
  • 利用思路:
      1. 根据 uaf 使用 fastbin attack 分配 chunk 到 (0x602095 - 8)
      1. 覆盖 buf 地址 为 got 表地址 , 并重置所有标志为 false
      1. 使用 show 函数 泄露 libc
      1. 使用 edit 函数劫持 got 表, 从而执行 one_gadget 或者 system("/bin/sh")
      • 4.1 system("/bin/sh") , 劫持 atoi

exp


quote_list

  • x86 elf | Full Relro , canary , nx , pie
  • 漏洞点:
    • edit 函数可以多输入一个字符 , off by one
  • 利用思路
      1. 使用 off by one 进行 chunk overlap , 从而造成堆溢出
      1. 利用 unsorted bin attack leak libc 地址
      • tip:此处 chunk 需要大于 0x400
      1. 根据 堆溢出 使用 fastbin attack 进行 __realloc_hook 劫持 (直接劫持 __malloc_hook 不满足使用条件) , 从而使用 one_gadget
      1. 调用 create 触发

exp

你可能感兴趣的:(fireshell 2019 | pwn wp)