pwn学习笔记(一)(32位和64位的栈溢出)

32位
32位的栈帧是这样的在这里插入图片描述
栈溢出基本思路是覆盖掉返回地址和参数,执行system()函数从而/bin/sh拿到flag

64位
64位的栈帧也是这样的
但是在 Linux 上,前六个参数通过 RDI 、 RSI 、 RDX 、 RCX 、 R8 和 R9 传递;
而在 Windows 中,前四个参数通过 RCX 、 RDX 、 R8 和 R9 来传递
而第七个(windows下第五个)参数才push进参数的地方
所以我们要做的首先还是找到system()
传参的时候则是找到指令为

pop rdi
ret

的地方

使用scp命令把文件从本机传到虚拟机桌面

scp local_file remote_username@remote_ip:remote_folder

remote_folder那里写绝对路径 eg:/home/username/Desktop

//利用ROPgadget寻找
//ROPgadget --binary morton.dms --only 'pop|ret' | grep rdi
//binary(Specify a binary filename to analyze 指定要分析的二进制文件名
//morton.dms 文件名
//only(Only show specific instructions 仅显示特地指令
//grep 查找符合条件的字符串(外部指令

pop rdi目的是可以通过溢出自由地改动rdi的值(即参数值
ret等价于pop rip
目的是让我们跳转到目的函数(system
然后就可以得到flag了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值