缓冲区溢出及gdp调试全过程

在Linux下编写一下代码:

#include <stdio.h>
#include <string.h>

char Lbuffer[] = "01234567890123456789========ABCD";

void foo()
{
    char buff[16];
    strcpy (buff, Lbuffer);
}

int main(int argc, char * argv[])
{
    foo();    return 0;
}

编译命令:

gcc -fno-stack-protector -o h h.c

用gdb调试可执行程序h,计算缓冲区起始地址与函数foo返回地址的距离,下面介绍调试过程

缓冲区的起始地址,即变量buffer的起始地址是:0xbfffefd0

函数foo返回地址是:0xbfffeffc

因此缓冲区起始地址与函数foo返回地址的距离是:

0xbfffeffc - 0xbfffefd0 =1c =28字节

下面是完整的调试过程:

时间: 2024-10-29 21:52:28

缓冲区溢出及gdp调试全过程的相关文章

缓冲区溢出分析第08课:MS06-040漏洞研究——动态调试

前言 经过上次的分析,我们已经知道了MS06-040漏洞的本质,那么这次我们就通过编程实现漏洞的利用. 编写漏洞利用程序的框架 这里我使用的是VC++6.0进行编写,需要将包含有漏洞的netapi32.dll文件与工程文件放置在同一个目录下.程序如下: #include <windows.h> typedef void (*MYPROC)(LPTSTR, ...); int main() { char Str[0x320]; char lpWideCharStr[0x440]; int arg

kali实战-缓冲区溢出

我们之前可能都了解过自动化的程序,学习自动化程序的使用方法,但是在计算机领域有一个词语叫做"零日漏洞",这样的漏洞是如何发现的呢?有些漏洞通过远程就可以控制你的计算机,安装木马,达到这样的目的,他们是如何通过远程控制你的系统的呢?今天我们学习此类攻击中最主要一种:缓冲区溢出,通过缓冲区溢出我们就可以控制目标机器.基于本章的内容从原理上我们已经具备这样的方法可以自己去发现"零日漏洞",发现的原理和方法将在本章注意展开讲解. 加Q群交流kali Q群:108186516

小白日记17:kali渗透测试之缓冲区溢出实例-windows,POP3,SLmail

缓冲区溢出实例 缓冲区溢出原理:http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html 空间存储了用户程序的函数栈帧(包括参数.局部数据等),实现函数调用机制,它的数据增长方向是低地址方向.堆空间存储了程序运行时动态申请的内存数据等,数据增长方向是高地址方向.除了代码段和受操作系统保护的数据区域,其他的内存区域都可能作为缓冲区,因此缓冲区溢出的位置可能在数据段,也可能在堆.栈段.如果程序的代码有软件漏洞,恶意程序

LINUX安全--构造数据实现缓冲区溢出

源代码: #include <stdio.h> #include <stdlib.h> #include <string.h> char *file[2] = {"superman.txt","batman.txt"}; char email[128]; char* cat_file(char *fileName){ FILE *fp; char *content = (char *)malloc(40); memset(cont

CSAPP缓冲区溢出攻击实验(下)

CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将global_value的值修改为cookie.因为全局变量与代码不在一个段中,所以我们不能让缓冲区一直溢出到.bss段(因为global_value初始化为0,所以它会被放在.bss而非.data段以节省空间)覆盖global_value的值.若修改了.bss和.text之间某些只读的段会引起操作系

缓冲区溢出攻击

缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题.随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来.其中看雪的<0day安全:软件漏洞分析技术>一书将缓冲区溢出攻击的原理阐述得简洁明了.本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证.不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如MS的Visual Stu

【安全牛学习笔记】Linux缓冲区溢出

Linux缓冲区溢出 FUZZING Crossfire 1.9.0版本接受入展socket连接时攒在缓冲区溢出漏洞 调试工具 edb 运行平台 Kali i486虚拟机 [email protected]:~# cd /usr/games/ [email protected]:/usr/games# ls crossfire [email protected]:/usr/games#  rm -rf crossfire [email protected]:~# mv crossfie.tar.

小白日记18:kali渗透测试之缓冲区溢出实例(二)--Linux,穿越火线1.9.0

Linux系统下穿越火线-缓冲区溢出 原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞. 工具: 调试工具:edb: ###python在漏洞溢出方面的渗透测试和漏洞攻击中,具有很大的优势 实验对象:crossfire[多人在线RPG游戏] 运行平台:Kali i686 虚拟机[32位,计算机CPU位数是指地址总线位数,64位系统的寻址空间为2^64,寻址过大,难以处理,为了简化本章操作,所以选用32位] 搭建实验环境 #linux中,游戏需安装带其ga

转:&quot;在已损坏了程序内部状态的XXX.exe 中发生了缓冲区溢出&quot;的一种可能原因

我的问题跟原作者的问题差不多.头文件和DLL不匹配导致的. 原文链接:http://blog.csdn.net/u012494876/article/details/39030887 今天软件突然出现崩溃的bug: 在release模式下,总是崩溃在一个函数A的结束处,打印输出调试,发现如果注释该函数A中的某个函数B的调用,崩溃不会发生:除此之外,注释函数B中的任何代码都不起作用. 崩溃时弹出的对话框为:"在已损坏了程序内部状态的 BREW_Simulator.exe 中发生了缓冲区溢出.按“中