Ret2libc
来源:互联网 发布:哪里购买域名比较好 编辑:程序博客网 时间:2024/05/28 23:22
昨晚同学问了关于ret2libc时参数布置的问题,今天在此记录
假设熟悉stack overflow
Ps:ret2libc是为了对抗DEP/NX产生
栈的布置
在说明ret2libc之前,栈的布置需要提前说明一下,以以下简单代码为例
#include <stdio.h>int trap(int x){ int y=0; y+=x; return y;}int main(int argc,char **argv){ int z=5; trap(5); return 0;}
在执行trap(5)之后的栈布局就像是这样
注意5是在ebp+8这个位置的。
为了对抗DEP/NX,覆盖后的ret-addr必须是可以执行的内存位置,所以引入了ret2libc。
在libc.so中,有一个system()函数,如果我们能把ret-addr覆盖到这里就好了,system需要一个参数,常见的有”/bin/bash”,这个参数又该放在哪里?
假如我们现在成功的覆盖为system,考虑现在的esp和ebp位置
当下一步pop eip执行之后,我们就会进入到system()
而system()内执行的是
push ebpmov ebp,esp...
所以,ebp会指向上方的over flow,所以,在str-addr就是我们要放置”/bin/bash”的地方啦~(ebp+8)
而下方的overflow我们会放置exit()的地址,因为system()执行完毕后,下一个pop eip的就是这里了
既然都说到了ret2libc,那么ROP也不远啦~有空再来说说ROP
详细ret2libc资料,请参考此pdf
0 0
- Ret2libc
- Ret2Libc学习NtSetInformationProcess DEP
- Ret2libc 利用 VitualProtect
- Ret2libc 利用 VirtualAlloc
- DEP: Ret2Libc via VirtualProtect()
- Ret2Libc 攻击技术
- shellcode之二.Plus2:ret2libc实例
- 使用ret2libc攻击方法绕过数据执行保护
- Mailbox(getshell) writeup —— ret2libc的利用
- 利用Ret2Libc挑战DEP——利用ZwSetInformationProcess
- 利用Ret2Libc挑战DEP之二——利用VirtualProtect
- 通过GOT覆写实现ret2libc - 64-bit Linux stack smashing tutorial: Part 3
- <Oday安全 12.3.1Ret2Libc实战之利用ZwSetInformationProcess>一节注记(上)
- <Oday安全 12.3.1Ret2Libc实战之利用ZwSetInformationProcess>一节注记(下)
- <Oday安全 12.3.1Ret2Libc实战之利用ZwSetInformationProcess>一节补充
- 记录学习《0Day安全》路上遇到的问题解决方案 利用Ret2Libc挑战DEP
- JUnit之TestCase和TestSuite详解
- Windows下Git SSH 创建Key的步骤
- 2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
- Lucene原理
- 关于获取当前时间出现1970年问题的解决
- Ret2libc
- 第一行代码-安卓之旅
- 集合框架-集合的嵌套遍历
- ios7 deb插件安装。
- linux部署项目(Java项目+Tomcat+mysql)
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
- Android与服务器通信的方法之一(TCP)效率高安全性完善
- Jquery事件的显示与隐藏
- django 登录和session过期跳转