寝室原创:计算机导论CSAPP实验详解(level1-4)
需积分: 9 81 浏览量
更新于2024-07-24
收藏 168KB PDF 举报
本篇文档涉及到的是计算机导论课程中的实验作业,主要围绕着CSAPP(Computer Science Application Programming)中的Lab系列进行讲解。Lab3至Level4是逐步递增难度的挑战,每个级别都涉及到了程序逆向工程和调试技巧。
Level 0 的任务相对简单,目标是通过输入一个过长字符串使得程序的smoke地址覆盖eip(指令指针寄存器),以便控制程序流程。答案提供了一个特定的16进制字符串,即`31313131303030...10890408`。
Level 1 建立在Level 0 的基础上,增加了一个与cookie相关的参数。解答同样给出了一个16进制字符串`303030...6aeb174c`,这个阶段可能需要找到cookie的存储位置并利用它来进一步控制程序。
Level 2 的挑战在于,由于存在某种限制,不能直接运行程序,必须在GDB(GNU调试器)环境下执行。通过分析得知cookie存储在`0x804aa50`,global_value位于`0x804aa60a`。在这个级别,学生需设置断点、查看寄存器值来找出buf的地址,最终提供的输入字符串是`b86aeb174ca360aa0408c300000000000cbbffbf8c890408`。
Level 3 的难度提升,要求先设置eax和ebp的值,然后将callgetbuf指令的地址压入栈,最后ret返回到test函数。解答给出了输入字符串`b86aeb174cbd38bbffbf68ee890408c30cbbffbf`。
Level 4 是整个系列中最具挑战性的一环,因为GDB下无法多次输入字符串,并且直接运行会遇到栈内存问题。解决方法是使用catexploit5.txt文件生成5次输入,然后在GDB环境下运行。程序代码提到eax被设为`0x4c17eb9a`,而ebp的值不固定,但与esp(堆栈帧指针)有一个固定的偏移量24。提供的源码样本展示了如何构造这种复杂操作。
这些实验着重于让学生理解程序逆向工程,内存管理,以及调试工具的使用,不仅要求技术上的编程能力,还锻炼了解决实际问题的思维和技巧。
2023-07-17 上传
2023-11-15 上传
2023-05-10 上传
2023-12-07 上传
2023-12-07 上传
2023-09-16 上传
2023-09-16 上传
2023-06-23 上传
享乐主
- 粉丝: 644
- 资源: 23
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据