20145235李涛《网络对抗》逆向及Bof基础
2024-10-19 11:51:59
上学期实验楼上做过这个实验
直接修改程序机器指令,改变程序执行流程
- 首先进行反汇编
我们所要修改的是,程序从foo返回,本来要返回到80484ba,而我们要把80484ba修改为getshell的首地址,所以通过vim直接查看可执行文件,并找到程序从foo返回的二进制代码,并将其替换,使之跳转到函数getshell。
-
这样程序就跳转到了getshell
缓冲区溢出攻击
- 在调用foo函数时,输入的字符会存储在foo函数的栈内,程序会提前申明缓存区的大小,如果数据过大,超过缓冲区的大小,显然会溢出,然而我们知道,数据是从低地址向高地址存储,堆栈所存储的返回地址也在高地址,如果我们的数据恰好覆盖了返回地址,那么程序的执行就会发生改变,如果将返回地址修改为getshell的首地址,那么调用完fool之后,就会调用getshell,而不会返回main函数了
- 通过尝试,当输入28个字符时就会发生溢出
感想
- 上学期做过缓冲区溢出的实验,是在实验楼上面进行的。相比较实验楼上的实验,本次实验在操作上面没有实验楼的难,但有了一些新的收获。我觉得直接修改可执行文件这个方法有点强,哈哈,简单直接。构造参数这个方法和实验楼的原理大致相同。通过这几次实验,发现缓冲区溢出攻击的原理简单,但具体操作的方法却不简单,而且多种多样,可见对不同的程序要用不同的方式去攻击。
最新文章
- easyui如何动态改变列的编辑属性
- cookie设置保存用户名,填入中文名之后出现的错误500问题
- Symantec Backup Exec 2012 Agent For Linux安装
- Spring中的通知(Advice)和顾问(Advisor)
- RabbitMQ安装配置
- PHP基础封装简单的MysqliHelper类
- iOS10 UI教程管理层次结构
- HDU 4588 Count The Carries (数学,计数)
- 【Maven实战】仓库介绍和Nexus的安装
- 纠错记录(Could not open the editor: Android XML Editor cannot process this input.)
- [6278009]使用Visual Stuido Code 编写Markdown
- JAVA中Socket的用法模拟服务端和客户端
- 简单的sql调优(批处理)
- Redis 分布式锁的实现
- Docker基本命令与使用 —— Docker容器的网络连接(四)
- RPC通信原理
- Calling Synchronous Methods Asynchronously
- HTML的报告
- python管道pipe
- Python面试题目之深浅拷贝浅析
热门文章
- 如何下载ubuntu桌面,并使用
- call to unavailable function system not available on ios 解决方案
- manacher算法处理最长的回文子串(二)
- centos 6.5 安装图形界面【转】
- 《ASP.NET1200例》C#在网页上编写动态时钟
- zoj3662(dp)
- Leetcode-Construct Binary Tree from inorder and postorder travesal
- Leetcode-Convert Sorted Array to BST
- HDU 5157 Harry and magic string(回文树)
- c# ,socket编程的一些常用方法