美文网首页
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

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