Rop攻击
参考:http://en.wikipedia.org/wiki/Return-oriented_programming
Rop全称Return-Oriented Programming,就是对栈上的返回地址进行利用的一种攻击方式。
对于栈的利用经历了几个阶段,都是在“道高一尺,魔高一丈”的正邪较量中不断地升级地。
1. Stack Smashing Attack
简单版本,主要是覆盖返回地址,将其指引到自己构造好的shellcode中去。
因为自己的shellcode通常是存储在数据之中,所以可以通过DEP的机制来防御这种攻击。
2. Return Into Library
既然无法使用自己构造好的shellcode,那么就可以复用已经写好的library代码,因为这些代码是被信任地,加载到可以执行的内存区域中去的。通过精心构造的栈传递特定参数来调用library中特定函数的方式,来构建有效的攻击逻辑。
这种机制可以通过限制library中的函数的破坏性的方式,以及64系统带来的新的函数调用方式(函数调用的第一个参数不再是通过栈传递,而是通过寄存器传递)来防御。
3. Borrowed Code Chunk
这一机制通过查找library中特定的指令序列,通过这些指令序列将构造好的参数传递到寄存器和栈中来完成攻击。
4. Return-Oriented Programming
通过查找library中的代码来构造出可以执行任意逻辑的攻击链。
有两种方式来防御:
ASLR, Address Space Layout Randomization, 通过随机化地布局library加载到内存中的地址,来增加构造攻击链的难度。
kBouncer, 通过检查返回指令是否返回到一个立即调用call指令的位置的方式来监控是否有攻击链的行为,缺点是性能太差。
Rop攻击的更多相关文章
- 20145236《网络对抗》进阶实验——64位Ubuntu 17.10.1 ROP攻击
20145236<网络对抗>进阶实验--64位Ubuntu 17.10.1 ROP攻击 基础知识 ROP攻击 ROP全称为Retrun-oriented Programmming(面向返回 ...
- 使用ROP攻击绕过Windows的DEP
使用ROP攻击绕过Windows的DEP 基础知识 DEP DEP(Data Execution Prevention)意为数据执行保护,是Windows的一项安全机制,主要能够在内存上执行额外检查以 ...
- 64位Ubuntu系统下ROP攻击
64位Ubuntu系统下ROP攻击 基础知识 ROP攻击 ROP全称为Retrun-oriented Programmming(面向返回的编程)是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可 ...
- 【转】针对Android上的ROP攻击剖析
引言 ROP(Return-oriented programming),即“返回导向编程技术”.其核心思想是在整个进程空间内现存的函数中寻找适合指令片断(gadget),并通过精心设计返回 ...
- 一步一步学ROP之linux_x64篇
一步一步学ROP之linux_x64篇 一.序 **ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防 ...
- 一步一步学ROP之linux_x86篇
一步一步学ROP之linux_x86篇 作者:蒸米@阿里聚安全 一.序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过 ...
- 缓冲区溢出基础实践(二)——ROP 与 hijack GOT
3.ROP ROP 即 Return Oritented Programming ,其主要思想是在栈缓冲区溢出的基础上,通过程序和库函数中已有的小片段(gadgets)构造一组串联的指令序列,形成攻击 ...
- APT攻击基础科普
0x00 APT的历史起源背景 APT这个词汇最早起源于:2005年英国和美国的CERT组织发布了关于有针对性的社交工程电子邮件,放弃特洛伊木马以泄露敏感信息的第一个警告,尽管没有使用“APT”这个名 ...
- 转:一步一步学ROP之linux_x86篇 - 蒸米
原文地址:http://drops.wooyun.org/tips/6597 0×00 序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击 ...
随机推荐
- python count()函数
Python 元组 count() 方法用于统计某个元素在元祖,列表,字符串中出现的次数.可选参数为在字符串搜索的开始与结束位置. 参数 sub -- 搜索的子字符串 start -- 字符串开始搜索 ...
- ylbtech-公司-滴滴出行:滴滴出行
ylbtech-公司-滴滴出行:滴滴出行 滴滴出行是涵盖出租车. 专车. 滴滴快车. 顺风车. 代驾及 大巴等多项业务在内的一站式出行平台,2015年9月9日由“滴滴打车”更名而来. 2月1日起, ...
- dfs与dp算法之关系与经典入门例题
目录 声明 dfs与dp的关系 经典例题-数字三角形 - POJ 1163 题目 dfs思路 解题思路 具体代码 dp思路 解题思路 具体代码 声明 本文不介绍dfs.dp算法的基础思路,有想了解的可 ...
- SpringMVC入门及拦截器
SSM最后一个框架springmvc,其实上手特别简单.但是我昨天看一个深入源码的视频,差点GG.其实以前学过很多东西,都忘了,不敢说学会,现在有了本书,看过一遍之后.多多少少记住一些,权当我会用了, ...
- c# PID算法入门
离开工控行业已经有一段时间了,最近回忆起以前的工作,又对 PID 算法有了兴趣.所以写了一个小项目,希望可以帮到需要的人,也算是对那段工作经历的一个总结. 这是一个 winform 的项目.负载是一个 ...
- sum - 计算文件的校验和,以及文件占用的块数
总览 (SYNOPSIS) ../src/sum [OPTION]... [FILE]... 描述 (DESCRIPTION) 显示 每个 文件 FILE 的 校验和, 以及 他们 占用的 块数. - ...
- 请问如何实现字符串UTF8->BIG5,BIG5->UTF8。保证送分。-Java/JavaSE
请问如何实现字符串UTF8-> BIG5,BIG5-> UTF8. ------回答--------- ------其他回答(100分)--------- public String BI ...
- Eclipse如何设置jsp文件默认UTF-8格式编码
我使用的是Eclipse Jee Neon, Window->Preferences 具体设置如图所示:
- USACO18DEC Platinum
standing out from the field 给你n个串,对于每个串求出只包含在这个串中的本质不同的子串? 后缀自动机,建树,对于每一个点打上包含在哪个串中的标记. 叶子都是前缀,直接在sa ...
- Database - 数据库隔离级别
总结 数据库在并发的情况下,可能会出现: 脏读 不可重复读 --> 原因:UPDATE操作 幻读 --> 原因:INSERT/DELETE操作 为了避免以上问题,数据库事务增加隔离级别,来 ...