汇编语言 栈溢出攻击实验

问题描述

汇编语言 栈溢出攻击实验

对于实验的原理我并不太清楚,应该是吧foo函数的返回地址篡改到malice函数的入口,最后不断循环malice函数用栈帧把栈占满导致溢出呢?
附上程序原文:
void malice()
{
printf("you have been attacked.n");
}
void foo()
{
int* ret;
ret=(int*)&ret+2; //get the addr of return addr
(*ret)=(int)malice; //set my return addr to malice
}
int main()
{
foo();
return 0;
}

解决方案

没有不断循环,foo的返回地址被破坏,无法返回到main函数中,所以程序会执行失败

时间: 2024-09-15 07:25:16

汇编语言 栈溢出攻击实验的相关文章

[翻译]现代Linux系统上的栈溢出攻击【转】

转自:http://www.codeweblog.com/%E7%BF%BB%E8%AF%91-%E7%8E%B0%E4%BB%A3linux%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E6%A0%88%E6%BA%A2%E5%87%BA%E6%94%BB%E5%87%BB/ 现代Linux系统上的栈溢出攻击 2012.12.21 - 06:56 - jip 预备知识: 对C语言和 X86_64 汇编语言有基本的了解 ++++++++++++++++++++++++

Linux下基本栈溢出攻击【转】

转自:http://blog.csdn.net/wangxiaolong_china/article/details/6844415 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 转载请注明出处httpblogcsdnnetwangxiaolong_china   1    Linux栈溢出保护机制 1   基本栈溢出攻击原理及实验 转载请注明出处:http://blog.csdn.net/wangxiaolong_china   1.1    Linux栈溢出保护机制

Shellcode攻击实验

//csdn博客目前暂时不再更新了,有兴趣请访问我的技术博客-晓的博客:zhangxiaolong.org        首先,先要知道什么是shellcode,Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限.详见维基百科shellcode介绍:http://en.wikipedia.org/wiki/Shellcode.       今天,先从一个简单的漏洞程序入手分析进行shellcode攻击.看一个程序vulp.c #inclu

用ROP进行栈溢出攻击Linux服务器

通过Protostar stack6演示Linux下ROP的简单使用,ROP就是所谓的Return Orientated Programming,早期也叫ret2libc,思路是一样的,只是平台换到了Linux下而已. 0×01. __builtin_return_address函数 先介绍下__builtin_return_address这个函数,这个函数接收一个参数,可以是0,1,2等.__builtin_return_address(0)返回当前函数的返回地址,如果参数增大1,那么就往上走

Offset2lib攻击如何全面绕过64位Linux的内核防护【视频】

前言 地址空间布局随机化(ASLR),在你知道目标代码或数据定位的前提下,它可以变成一种规避攻击的技术.正因为黑客并不知道整个地址空间的布局,ASLR技术变得极为有效.只有当可执行程序编译为PIE时(地址无关可执行文件),才能最大限度地从ASLR技术那里获得保护,因为其所有组成部分都是从随机地址加载的. 然而,当可执行文件被编译成PIE之后,GNU/Linux下的ASLR实现的过程中,会出现一个名为Offset2lib安全漏洞,其专门用于绕过在GNU/Linux下如ASLR之类的对于普通漏洞的常

在linux下进行缓冲区溢出实验 出现illegal instruction

问题描述 在linux下进行缓冲区溢出实验 出现illegal instruction int main(int argc, int *argv[]) { char buf[10]; if(argc>1) strcpy(buf,argv[1]); return 0; } 编译时带有-fno-stack-protector,在第一参数为21字符时正常,22字符时出现illegal instruction,23字符时出点段错误. 请问22字符时的illegal instruction是怎么回事? 解

基带0day漏洞可攻击数百万部华为手机

本文讲的是基带0day漏洞可攻击数百万部华为手机,安全公司Comsecuris的安全研究员Ralf-Phillip Weinmann周四透露:未公开的基带漏洞MIAMI影响了华为智能手机.笔记本WWAN模块以及loT(物联网)组件.在其中一种攻击方案中,攻击者可以对这些设备进行内存破坏的攻击.不过,攻击成功需要的条件很难具备,这大大降低了公共受攻击的可能性. 数千万的华为智能手机可被轻易攻击 Weinmann表示,这一个基带漏洞是HiSliconBalong芯片组中的4G LTE调制解调器(译者

怎么使用GCC编译选项检测栈溢出

有一次当我试图重现一个缓冲区溢出的问题时我才了解到这些编译选项.我是在Ubuntu 12.04上进行试验的,gcc版本为4.6.3.我所做的很简单:  代码如下 复制代码 #include <stdio.h> #include <string.h> int main(void) {     int len = 0;     char str[10] = {0};     printf("n Enter the name n");     gets(str); /

了解return-into-libc攻击以及如何在系统中防止攻击的发生

最后,本文给出了针对这些攻击方法的防御手段.本文可以帮助读者了解 return-into-libc 攻击以及如何在系统中 防止攻击的发生.缓冲区溢出攻击是最常见的利用程序缺陷的攻击方法,并成为了当前重要的安全威胁之一. 在各种安全报告中,缓冲区溢出漏洞始终是其中很重要的一部分.缓冲区溢出攻击很容易被攻击者利用,因为 C++ 和 C++等语言并没有自动检测缓冲区溢出操作,同时程序编写人员在编写代码时也很难始终检查缓冲区是否可能溢出.利用溢出,攻击者可以将期望数据写入漏洞程序内存中的任意位置,甚至包