ROP(Return Oriented Programming)
来源:互联网 发布:nznd男团 知乎 编辑:程序博客网 时间:2024/06/01 09:26
ROP
在ret2libc中提到了ROP,今天在此详细记录
在YouTube看rop的视频时,视频制作者提及这项技术是Hovav Shacham 于2007年首先展示出来,很是震惊,现在已经是2017年了,10年之内技术又进步到哪里了呢?还望自己勤勉学习,能早一日看见顶峰
rop的起源
每一项技术的出现,背后必定有存在的意义,在ret2libc中,我们提及这是为了对抗DEP/NX即W^N技术而产生。
想一想如果一个函数不会被正常的程序使用,那又为什么要加载呢?如果在libc中移除system()又会怎么样?
esp就是新的eip
回想一下在ret2libc中我们做过的事情,在ret处覆盖为system(),在其之上覆盖为exit()地址,这样在执行完system()之后紧接着执行的就是exit(),这不就是一条我们能控制的执行流吗?假如我们能控制好覆盖后的地址,确保每一次执行完都能ret,那么esp就能成为我们的新eip指针~
gadgets的来源
一个精致小巧的工具
https://github.com/packz/ropeme
rop思想的精髓就在于覆盖的内容是精巧设计的而不仅仅是覆盖了ret-addr,在每一次的ret之后返回的地址实际就是下一次的eip指针,以以下例子举例
这里我们把ret-addr及之后的位置进行覆盖,那么接下来会执行的指令 pop eip
或者是 ret
就会帮我们把eip指向0x0808ad33这个位置,继续执行
pop eaxret
就会把0x5赋值给eax,然后ret~我们就又一次跳转到了我们指定好的一个位置0x07ff3a42
这就是rop
ROP的完备性
rop真的能完成所有的工作吗?这个问题已经被证明,rop是图灵完备的~所以放心大胆的去做吧
更详细的参考资料
1.完整的rop利用 Return-Oriented-Programming-By Saif El-Sherei
2.详尽的ROP介绍 Return-oriented Programming:
Exploitation without Code Injection-Erik Buchanan, Ryan Roemer, Stefan Savage, Hovav Shacham
University of California, San Diego
- ROP(Return Oriented Programming)
- Introduction to return oriented programming (ROP)
- Blind Return Oriented Programming (BROP) Attack - 攻击原理
- Blind Return Oriented Programming(BROP)Attack攻击原理
- Understanding Object Oriented Programming
- Language Oriented Programming
- Language Oriented Programming (翻译)
- Aspect Oriented Programming (AOP)
- OOP:Object Oriented Programming
- Language Oriented Programming
- Component-Oriented Programming
- Object Oriented Programming Language
- C++ Object Oriented programming
- Aspect-oriented programming
- object-oriented programming (OOP)
- Object Oriented Programming
- Understanding Object Oriented Programming
- Understanding Object Oriented Programming
- unrecognized selector sent to instance出现的原因和解决方案
- redis
- Vert.x日志配置
- angular 结合 css 用图片自定义radio及checkbox样式
- 应用程序调试(一)————使用strace命令来跟踪系统调用
- ROP(Return Oriented Programming)
- oat文件的 backtrace 定位
- Ubuntu下配置jdk
- oracle 修改字符集 为ZHS16GBK
- C++ 11/14 1
- 金额 数字小写 自动翻译成中文大写
- 图数据库
- 注解用法详解——@SuppressWarnings
- dumpsys命令的使用及telephony.registry解读