Web安全 Buffer Overflow Attack实验
来源:互联网 发布:linux查看目录结构命令 编辑:程序博客网 时间:2024/06/05 05:33
Assignment 7
Buffer Overflow Attack
一开始我直接复制粘贴了蔡老师的代码,结果一直得不到预期的输出,但是之后我再看了看蔡老师的课件,又去网上重新找了找资料,完成了这次实验。
核心思想:
当程序执行strcpy时,程序将char[]中的内容拷入buffer中,但是buffer只能容纳一定容量的Bytes。由于C语言不进行边界检查,所以结果是buffer后面的字节内容被覆盖掉了,其中包括了ebp, ret地址,在这个例子中就是i r命令查看到的地址,那么如果要使它变成我们想要跳转到的bug函数地址,则要把char[]内容改造——那么沿用蔡老师原来的代码自然就不行了,我们得自己更该char[]的内容,即更改为bug的函数地址。然后运行程序,自然就会跳转到程序内按规定不能到的地方。
实验步骤:
首先直接编译运行程序,注意调整random_va_space与-fno-stack-protector。运行第一次。
使用disass main 命令反汇编main函数:(注意:esp的地址就是char[]的地址)
找到 copy下面一行(高亮的) 0x08048462,即是copy函数的入口地址。
使用命令i r 查看寄存器信息,找到esp(char[]的地址),查看该地址有那些内容。我们发现是正常的0x08048462,说明还是copy函数的入口地址(not yet overflowed)
为了使我们能够顺利转到bug函数,我们使用disass bug来查看它的入口地址,如图:
发现是0x08048439
为了顺利跳转到这个地址,我们更改代码如下(注意\x39\x84\x04\x08):
为了方便查看buffer是如何溢出的,我给strcpy后一句打上了断点,见图:
打断点后运行程序:
由于打上了断点,所以我们可以知道程序运行到这里已经执行了strcpy函数(把char[]的内容赋值到buffer,造成溢出),此时我们可以再次调用i r查看寄存器内容:(此时高亮部分已经被溢出赋值为bug的入口地址0x08048439)
最终查看输出结果:
这就是buffer overflow如何造成攻击的。
- Web安全 Buffer Overflow Attack实验
- 【嵌入式安全扫盲一】Stack buffer overflow
- 【嵌入式安全扫盲一】Stack buffer overflow
- buffer overflow
- buffer overflow
- Buffer Overflow
- Buffer overflow
- Buffer Overflow
- SXVTC 1906 Attack Overflow
- WebGoat实验之Buffer Overflow(缓冲区溢出)- 2016.01.08
- Buffer-Overflow Vulnerability Lab——山东大学网络攻防实验
- Zeus Web Server 'SSL2_CLIENT_HELLO' Remote Buffer Overflow Vulnerability
- WinRAR buffer overflow
- 关于buffer overflow
- Stack buffer overflow (wiki)
- Buffer-overflow attacks
- 缓存溢出Buffer Overflow
- buffer overflow vulnerability
- java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
- spring配置文件详解
- UML五种关系
- IOS代理 protocol最简单的实例,没有之一。。
- 初学C51编程的误区
- Web安全 Buffer Overflow Attack实验
- hibernate之13.hql(一)
- Appdelegate中查看所有的View-递归
- 笔试以及面试题1
- 点滴记录——Ubuntu 自动挂载windows分区
- ASM tools used by Support : KFOD, KFED, AMDU (Doc ID 1485597.1)
- 软件工程第二次作业————结对编程项目
- 比酒量
- mysql备份和恢复笔记