LINUX安全--构造数据实现缓冲区溢出
来源:互联网 发布:ubuntu syslog server 编辑:程序博客网 时间:2024/05/31 19:37
源代码:
#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(content,0,40);
fp = fopen(fileName,"rb");
fscanf(fp,"%40s",content);
fclose(fp);
printf("the content is:%s\n",content);
return content;
}
int main()
{
int i = 0;
char *temp = NULL;
char *file_content = NULL;
char buf[140];
while(i<2)
{
temp = file[i];
file_content = cat_file(temp);
printf("What's this?\nguess: ");
scanf("%s",buf);
if(strcmp(buf,file_content))
{
puts("Bad luck!");
continue;
}
i++;
puts("Hey you are so smart!");
}
puts("Congratulatinons! You Guessed everything!");
printf("input you email");
scanf("%s",email);
puts("Thank you so much! I will send you a gift,bye!");
return 0;
}
实验目录:
实验的要求:
通过构造数据进行溢出,读取flag.txt的内容
实验过程:
实验主要的思路就是在buf里面添加字符串,产生缓冲区溢出,进而将main函数的返回地址覆盖为cat_file,进而实现函数跳转,实现输出flag.txt
实验步骤
1.分析函数的栈的情况
对exc.exc文件进行gdb调试
查看main函数的汇编代码,并在如图所示的地方设置断点
我们在0x08048661和0x0804866c处设置断点进行调试确定栈的整体结构,所以栈的结构应该是这样子的
、
由于程序每次在输入buf时候总会和content_file进行比较如果不相同就会一直陷入死循环,因此我们在进行缓冲区溢出时主要的工作是首先要将i的值覆盖,其次将main函数的返回地址覆盖以及cat_file参数的输入。
对于将i的值进行覆盖首先我们通过分析可以得出变量i的地址为:0xbffff36c
main函数的返回地址为:0xbffff378
cat_file的地址为:0x080485dd
因为cat_file是有参数的,我们参数压入的方法主要是通过代码
来实现的,查看汇编代码,可以看到
地址为0x0804a080
基本是相关的参数已经确定接下来我们构造shellcode
shellcode如下:'a'*0x8c+l32(0x08048800)+'a'*4+l32(2)+'a'*12+l32(0x080485DD)+l32(0)+l32(0x0804A080)
编写python文件如下:
运行查看效果:
而return指令则不一样,如图:
- LINUX安全--构造数据实现缓冲区溢出
- 【安全牛学习笔记】Linux缓冲区溢出
- 安全编程-缓冲区溢出
- linux 下实现缓冲区溢出漏洞shellcode
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 安全编程: 防止缓冲区溢出
- 【信息安全】第一章 缓冲区溢出
- C实现缓冲区溢出
- Linux缓冲区溢出
- Linux缓冲区溢出问题
- linux下缓冲区溢出
- leetcode 26 Remove Duplicates from Sorted Array
- 设计模式:策略模式(轻松看懂策略模式)
- 利用栈进行数制转换
- 相比较Windows,Linux系统的优点体现在哪里?
- Dreaming
- LINUX安全--构造数据实现缓冲区溢出
- 恢复软件环境时遇到的关于opencv的几个错误
- Thread Safety Summary
- div失去焦点
- android事件的分发和消费机制(onTouchEvent())
- Android开发基础第一章——Activity
- Android API Guides---Contacts Provider
- openstack neutron(tap、qvb、qvo详解)(转)
- hive0.12.0配置与安装详解