美文网首页
2018 网鼎杯 | pwn wp

2018 网鼎杯 | pwn wp

作者: fantasy_learner | 来源:发表于2019-01-14 16:42 被阅读0次

fgo

  • 漏洞点 :
    • delete 函数 uaf
  • 利用过程:
    • add(0x10) 两个组合 0x10(pointer) + 0x18(content)
    • del 0 -> del 1
    • add(0x8) , 0x10(pointer | chunk 1 pointer) + 0x10(content | chunk 0 pointer) ,从而可以 修改 chunk 0 的指针域为 secret 函数
    • 调用 print(0) , 从而触发后门函数

exp


GUESS

  • 流程分析:
    • 读入 flag 到栈上
    • 3轮 指定栈上字符串输入 , gets 输入造成溢出
    • 输入与 flag对比
  • 利用过程:
  • 该 题目 利用stack stamsh 的点进行指定地点的leak
    • tip : 这道题目需要用多次 stack smash进行leak , 能持续进行输入程序不崩溃的原因是 ,输入的函数是用fork启动的。
    1. leak , puts 函数地址,得到libc地址
    1. 根据 libc 地址计算出 libc["__environ"] 的地址 ,leak __environ 得到一个栈上的地址
    1. 根据2中的栈地址的相对偏移计算出flag地址, leak flag

exp


easyFMT

  • 功能分析
    • while True 的 字符串输入 , 然后输出 | 长度限制 0x64
  • 漏洞点: 格式化字符串
  • 利用方法:
      1. leak printf@got , 得到 printf 地址
      1. 计算得到 system 地址
      1. 修改 printf@got 的值 为 system
      1. 输入 /bin/sh getshell

exp


babyheap

  • 这道题目 考察了堆利用的技巧结合...
    • 学到了 unlink 的后向合并
    • 还利用到了 fastbin attack
  • 功能分析:
    • alloc :
      • 分配到指定index 一个 0x30 大小的chunk | malloc(0x20)
      • 并且进行 0x20 的输入
    • edit
      • 编辑指定 index 的 chunk , 做一个 0x20 的 输入
      • 最多 编辑3次
    • delete
      • free 指定 index 的 chunk | uaf
    • show
      • 输出 指定index的地址 上的值
  • 利用 过程
      1. 分配 6 个chunk , 做好 fastbin attack 和 unlink 的准备工作
      1. leak heap 地址
      1. 根据 heap 地址,edit(0) 构造条件,使用 fastbin attack 分配一个chunk到 堆上 , 将 uaf 拓展成 堆溢出
      1. 用堆溢出 修改 chunk 1 的 size 为 0xa1
      1. free chunk 1 | free 0xa1 大小的chunk 进行 unsorted bin leak , 并且进行 unlink (后向)
      1. 根据 libc 地址 计算出 one_gadget 地址
      1. edit(4) | 使用 unlink 覆盖 ptr[1] 为 __free_hook 地址 | Full Relro 不可修改got表
      1. edit(1) | 覆盖 __free_hook 为one_gadget

exp


blind

  • 这个题目 学到了 io_file 的利用 , 看来还是要再好好看看 io_file_plus 的结构体和相关调用。
  • 参考链接 : https://www.jianshu.com/p/f14adeda85df
  • 功能分析:
    • new | 分配一个 0x68 大小的chunk 到指定 index
    • change | 修改 指定 index 的 chunk 内容
    • release | free 指定 index 的 chunk | uaf 漏洞
  • 漏洞点:
    • uaf
      • 构成 fastbin attack
  • 利用过程:
      1. 利用 fastbin attack , 分配 chunk 到 0x60204d(stderr + 5 + 8) , 从而可以控制 ptr 数组
      1. 控制 ptr 数组为 &stdout , &bss+0x300 + 0x68 * n (n : 0 - 3)
      1. 布置 bss + 0x300 开始 为 fake_io_file 和 fake_vtable
      • 3.1 这次构造 发现可以布置除了 flag 和 vtable 之外的值全为 null , 但是还是要详细了解下原理。。。。
      • 3.2 如果设置其他值的 , io_read_* ,io_write_* 最好不要覆盖。
      • 3.3 可以把 fake_io_file 和 fake_vtable 布置在一起,但是需要主意 3.2 , 并且设置好 vtable的地址
      • 3.4 先布置好vtable 然后再修改 *stdout 为 &fake_io_file

exp 1 , 2 的区别是 fake_io_file 和 fake_vtable 是否分开
exp1
exp2

相关文章

  • 2018 网鼎杯 | pwn wp

    fgo 漏洞点 :delete 函数 uaf 利用过程:add(0x10) 两个组合 0x10(pointer)...

  • 网鼎杯pwn WP

    前言 本周参加了两个比赛,一个是de1CTF,另一个是网鼎杯,把这两场比赛全部总结一下。 在网鼎杯中,有幸拿了一个...

  • 网鼎杯半决赛 pwn wp

    pwn1防御机制: 运行了下 ,发现是一个模拟聊天软件的程序,功能一共有 8个 通过ida分析程序,程序一开时就分...

  • [网鼎杯线下] web && droopy 靶场

    网鼎杯线下web && droopy 靶场 这次网鼎打完啦,还是觉得自己太菜了半决赛第二也是抱了pwn爷爷的大腿(...

  • 网鼎杯(4)-pwn

    题目链接 保护还挺多 主要漏洞点: stack函数有栈溢出,还有puts函数可以泄漏栈的东西 secret函数由于...

  • 网鼎杯blend wp

    记录一次菜的抠脚的学习过程 题目是一个bin文件,首先通过file命令看一下文件格式 拖到IDA Pro 可以识别...

  • [2018网鼎杯] 总决赛writesup(pwn)

    题目链接 lin 有个后门,有栈溢出,但是程序会检测返回地址,直接把返回地址改到这里绕过 exp : LFYH 程...

  • [2018网鼎杯] 半决赛writesup(pwn)

    boorsheet 利用uaf劫持程序控制流 ` frainbuck 利用类似brainfuck进行数组越界泄漏l...

  • 天工杯2021 PWN WP

    看点:1.两个解法(shellcode、ROPchain)2.python3.9与pwntools的一个坑。 程序...

  • 2018-网鼎杯 pwn(部分线上+线下)

    第一场: pwn--guess 可以看到,这题是把flag存在栈里面,然后让你去猜flag,这种题目一看就是让你泄...

网友评论

      本文标题:2018 网鼎杯 | pwn wp

      本文链接:https://www.haomeiwen.com/subject/uiqjdqtx.html