缓冲区溢出攻击原理分析
《缓冲区溢出攻击实践》以实践者角度介绍了初级缓冲区溢出攻击方法,本文从原理上对该方法做原理性介绍。
函数帧结构
(gdb) disassemble main
Dump of assembler code for function main:0x08048484 <+0>: push %ebp0x08048485 <+1>: mov %esp,%ebp0x08048487 <+3>: and $0xfffffff0,%esp0x0804848a <+6>: sub $0x40,%esp0x0804848d <+9>: mov $0x80485e0,%edx0x08048492 <+14>: mov $0x80485e2,%eax0x08048497 <+19>: mov %edx,0x4(%esp)0x0804849b <+23>: mov %eax,(%esp)0x0804849e <+26>: call 0x80483c0 <fopen@plt>0x080484a3 <+31>: mov %eax,0x3c(%esp)0x080484a7 <+35>: cmpl $0x0,0x3c(%esp)0x080484ac <+40>: jne 0x80484c1 <main+61>0x080484ae <+42>: movl $0x80485ea,(%esp)0x080484b5 <+49>: call 0x8048380 <perror@plt>0x080484ba <+54>: mov $0x1,%eax0x080484bf <+59>: jmp 0x80484ff <main+123>0x080484c1 <+61>: lea 0x1c(%esp),%eax0x080484c5 <+65>: mov 0x3c(%esp),%edx0x080484c9 <+69>: mov %edx,0xc(%esp)0x080484cd <+73>: movl $0x1,0x8(%esp)0x080484d5 <+81>: movl $0x400,0x4(%esp)0x080484dd <+89>: mov %eax,(%esp)0x080484e0 <+92>: call 0x8048390 <fread@plt>0x080484e5 <+97>: mov $0x80485f0,%eax0x080484ea <+102>: lea 0x1c(%esp),%edx0x080484ee <+106>: mov %edx,0x4(%esp)0x080484f2 <+110>: mov %eax,(%esp)0x080484f5 <+113>: call 0x8048370 <printf@plt>0x080484fa <+118>: mov $0x0,%eax0x080484ff <+123>: leave0x08048500 <+124>: ret
End of assembler dump.
在函数体里面最先执行的几条指令,通常称为function prologue,它完成建立函数帧的功能。
示例程序的栈帧结构
缓冲区溢出后栈内容
小结
- 缓冲区溢出攻击实践
- 缓冲区溢出攻击原理分析
- 初识shellcode
- 如何编写本地shellcode
- 编写shellcode测试工具
- 使用ret2reg攻击绕过地址混淆
- 使用ret2libc攻击方法绕过数据执行保护
缓冲区溢出攻击原理分析相关推荐
- “缓冲区溢出攻击”原理分析及实例演示
一.原理分析 缓冲区溢出是一种非常普遍.非常危险的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运行失败.系统宕机.重新启动等后果.更为严重的是,可以利用它执行非授权指令, ...
- 缓冲区溢出攻击原理、方法及防范(一)
由于C/C++语言本身没有数组越界检查机制,当向缓冲区里写入的数据超过了为其分配的大小时,就会发生缓冲区溢出. 攻击者可以利用缓冲区溢出来窜改进程运行时栈,从而改变程序的正常流向.在分析缓冲区溢出攻击 ...
- 计算机缓冲器原理,缓冲区溢出攻击原理-信息安全工程师知识点
信息安全工程师知识点:缓冲区溢出攻击原理 缓冲区是计算机内存中的一个连续块,保存了给定类型的数据.当进行大量动态内存分配而又管理不当时,就会出现问题.动态变量所需要的缓冲区,是在程序运行时才进行分配的 ...
- 关于缓冲区溢出攻击原理的简单例子(C语言编写)
一.什么是缓冲区溢出? 缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,使得溢出的数据覆盖在合法数据上,通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈 ...
- linux缓冲区攻击实验报告,linux 下缓冲区溢出攻击原理及示例
一.溢出目标 无论是在windows下还是在linux下,溢出攻击基本上都是以控制计算机的执行路径为目标,而x86下执行哪条指令是由eip寄存器来控制的,所以如果能够修改eip寄存器的值,就可以修改计 ...
- 缓冲区溢出攻击(详细解析)
定义:利用缓冲区溢出漏洞进行攻击行动 攻击原理 通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的.造成缓冲区溢出的原因是程序中没有仔 ...
- 实验8 缓冲区溢出攻击实验
实验8 缓冲区溢出攻击实验 缓冲区溢出是目前最常见的一种安全问题,操作系统以及应用程序大都存在缓冲区溢出漏洞.缓冲区是一段连续内存空间,具有固定的长度.缓冲区溢出是由编程错误引起的,当程序向缓冲区内写 ...
- 缓冲区溢出攻击(Buffer Overflows实验笔记)
缓冲区溢出是什么? 缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数 ...
- 计算机系统实验五:缓冲区溢出攻击
参考教材:计算机系统基础 第二版 袁春风 机械工业出版社 参考慕课:计算机系统基础(四):编程与调试实践 https://www.icourse163.org/learn/NJU-1449521162 ...
最新文章
- jquery 获取一组元素的选中项 - 函数、jquery获取复选框值、jquery获取单选按钮值...
- CCF 201703-3 Markdown
- 从 DevOps 到 Serverless
- 残疾人无障碍设施工程改造送上门 900户家庭
- 数码管和573锁存器的细节问题
- “云原生全家桶“KubeSphere 如何让企业从容迈进云原生时代?
- Tuxera NTFS教程:在Mac上如何将MS-DOS文件系统格式化为NTFS文件系统?
- android activity透明主题,Android应用的全透明效果--Activity及Dialog的全透明
- postgresql如何让主键自增
- ServerProperties
- DWZUI(1.3)框架中遇到的两个问题
- 计算机基础线性代数还有,大学计算机基础 word作业.doc
- 修改phpMyAdmin使其能够管理多台远程MySQL服务器
- 使用java 语言 提取excel 中的手机号码,xls 格式以及xlsx 格式的excel 文件
- 步进电机的正反向旋转c语言编程,实现步进电机自动正反转程序怎么写
- #define c# 报错_天轰穿C#教程之#define和#undef【原创】
- 团队作业7——Alpha冲刺之事后诸葛亮
- redis-cli使用说明
- android卡在gradle,Android Studio打开新项目卡在Gradle的问题
- 京东到家大数据平台演进实战