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;
}
32位Linux系统的C函数如下:
void foo01()
{
char buff[16]; char Lbuffer[] = "01234567890123456789========ABCD";
strcpy (buff, Lbuffer);
}
char Lbuffer[] = "01234567890123456789========ABCD";
void foo02()
{
char buff[16]; strcpy (buff, Lbuffer);
}
用foo01()和foo02()替换buffer_overflow.c中的foo(),通过gdb调试, 分析foo01()和foo02()是否存在缓冲区溢出漏洞。
首先关掉关闭栈底随机化

创建测试实例

编译并运行该C程序


反汇编main和foo

在关键位置设置断点并运行程序

函数入口处的堆栈指针esp 指向的栈(地址为 0xbffff10c)保存了函数foo() 返回到调用函数 (main)的地址(0x080484af),即“函数的返回地址”。
记 录 堆 栈 指 针 esp 的 值 , 在 此 以 A 标 记 :
A=$esp=0xbffff10c
继续执行到下一个断点

由于C 语言默认将参数逆序推入堆栈,因此,src(全局变量Lbuffer的地址)先进栈(高地址),des(foo()中buff的首地址)后进栈(低地址)。

可见,Lbuffer的地址0x804a040保存在地址为0xbffff0d4的栈中,buff的首地址0xbffff0ec保存在地址0xbffff0d0的栈中。
令B=buff的首地址=0xbffff0ec
则buff的首地址与返回地址所在栈的距离 =A-B=0xbffff10c - 0xbffff0ec=0x20=32。
第三个断点出现错误

预计A-B的距离为28位,实际结果32位,且在第三个断点就出现错误,实验无法继续下去,原因未知。
将foo1编译并运行,没有出现问题。

linux缓冲区溢出尝试的更多相关文章
- 使用Linux进行缓冲区溢出实验的配置记录
在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等 ...
- Linux下缓冲区溢出攻击的原理及对策(转载)
前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实现 ...
- 小白日记18:kali渗透测试之缓冲区溢出实例(二)--Linux,穿越火线1.9.0
Linux系统下穿越火线-缓冲区溢出 原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞. 工具: 调试工具:edb: ###python在漏洞溢出方面的渗透测 ...
- Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞
漏洞名称: Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-423 发布时间: 2013-11-29 更新时间: 201 ...
- Linux kernel ‘xfs_attrlist_by_handle()’函数缓冲区溢出漏洞
漏洞名称: Linux kernel ‘xfs_attrlist_by_handle()’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-392 发布时间: 2013-11-29 更新 ...
- Linux kernel ‘uio_mmap_physical’函数缓冲区溢出漏洞
漏洞名称: Linux kernel ‘uio_mmap_physical’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-154 发布时间: 2013-11-13 更新时间: 201 ...
- Linux Kernel ‘write_tag_3_packet()’函数本地基于堆的缓冲区溢出漏洞
漏洞名称: Linux Kernel ‘write_tag_3_packet()’函数本地基于堆的缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-067 发布时间: 2013-11-07 ...
- Linux Kernel ‘drivers/staging/wlags49_h2/wl_priv.c’本地缓冲区溢出漏洞
漏洞名称: Linux Kernel ‘drivers/staging/wlags49_h2/wl_priv.c’本地缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-068 发布时间: 2 ...
- Linux Kernel ‘exitcode_proc_write()’函数本地缓冲区溢出漏洞
漏洞名称: Linux Kernel ‘exitcode_proc_write()’函数本地缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-061 发布时间: 2013-11-07 更新时 ...
- Linux Kernel ‘oz_cdev_write()’函数本地缓冲区溢出漏洞
漏洞名称: Linux Kernel ‘oz_cdev_write()’函数本地缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-060 发布时间: 2013-11-07 更新时间: 201 ...
随机推荐
- Access 时间查询 与 SQL SERVER 不一样的几个地方
最近用到了ACCESS 数据库 ,与之前用SQL SERVER 还是有点区别的. 1. 时间 之间 用 # 连接 如下: public static string GetUserInfo(stri ...
- (0319) uvmgen的使用,产生的UVM环境介绍
qq https://blog.csdn.net/hh199203/article/details/118210541
- Day23:个人小结的撰写&&对coderunner的熟悉
今日完成的任务: 1.完成个人小结的撰写 2.阅读Moodle文档,了解Moodle平台以及Moodle出题格式 明日计划: 1.撰写总报告中的结论 2.将插件安装完成 每日小结: 为了研究题库,特 ...
- windows系统修复
尝试进入安全模式,然后调整相关启动项或卸载有冲突的软件/驱动 尝试进入PE后使用chkdsk命令修复C分区 尝试进入系统后使用sfc /scannow命令检查修复系统
- Centos 性能监控技巧
1.top监控系统进程 top 命令查看进程时可自定义刷新频率,比较直观 用法 用法:Usage: top -hv | -bcHiOSs -d secs -n max -u|U user -p pid ...
- 攻防世界-fileinclude
一道简单的文件包含题目,源代码如下 一.代码分析 此题中关键代码为 分析此处代码可知,$lan的值是cookie中language所对应的值,当该值不为english时,会将$lan的值与.php字符 ...
- 智能风控:python金融风险管理与评分卡建模
Ch1 互联网金融的申请过程,通常由用户从移动端发起,首次贷款用户会经理申请.四要素验证.授信与额度利率定价.多层审批.用户提款等多个环节:对于还款后再次贷款的复贷客户,平台通常会基于更好的信用评估结 ...
- 分治-1-归并排序(Divide and Conquer-1-merge sort)
#include <stdio.h> #define INFINITY 999999 #define LEN(A) ((sizeof (A)) / (sizeof A[0])) void ...
- 论文笔记:Symbolic Execution for Software Testing: Three Decades Later
论文笔记:Symbolic Execution for Software Testing: Three Decades Later 作者 Cristian Cadar 是英国帝国理工学院SRG(Sof ...
- win10家庭版vmwarework启动蓝屏
最终升级到vmwarework16.2.5解决 据说17支持win11 再出问题直接上vm17了