PWN ret2xxx 小白笔记

这节课听的很懵,记得也没有很好,不建议看!!

1.ROP 

绕过NX,Return Oriented Programming

主要思想是:在栈缓冲溢出的基础上,利用程序中已有的小片段gadgets,来改变某些寄存器或者变量的值,从而控制程序的执行流程。所谓gadgets就是以ret结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。、

之所以称之为ROP,是因为核心在于利用了指令集中的ret指令,改变了1指令流的执行顺序。

ROP攻击一般得满足如下条件:

1.程序存在栈溢出,并且可以控制返回地址。

2.可以找到满足条件的gadgets以及相应的gadgets地址

如果gadgets每次的地址是不固定的,那我们就需要想办法动态获取对应地址了。

2.ret2text

控制程序执行程序本身已有的代码(.text),其实,这种攻击方式是一种笼统的描述。我们控制执行程序已有的代码的时候也可以控制程序执行好几段不相邻的程序已有的代码(gadgets),这就是我们所要说的ROP。

32位传参规则:system地址+(sys)返回地址+ 参数

char buf;//[esp+0h][ebp-88h]

payload:

64位

 

rdi指向binsh

pop rdi; ret;

ropper  寻找gadget

ropper --file name  --search "pop rdi"

ROPgadget也可以找

ROPgadget  --name    inndy_rop | grep "int 0x80"

会给出返回地址

exp

3.ret2shellcode:

4.ret2syscall

例子题目是静态编译的

控制程序执行系统调用,获取shell

view->  open subviews -> strings

ctrl+f

gets 函数读到回车 (0x0A)

由于静态编译

,所以程序存在int 0x80  可以使用中断调用系统函数

read(1,bss+0x100,8)   读入/bin/sh

execve(bss+0x100,0,0) getshell

ropper  --file name --search "int 0x80"

5.ret2libc

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y6y6y666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值