20155338 ch02 ch03课下作业
20155338 ch02 ch03课下作业
要求:
1、补充完成课上测试(不能只有截图,要有分析,问题解决过程,新学到的知识点)
课上测试-3-ch02
1、编写一个程序 “week0603学号.c",运行下面代码:
(1) short int v = -学号后四位
(2) unsigned short uv = (unsigned short) v
(3) printf("v = %d, uv = %u\n ", v, uv);
2、在第三行设置断点用gdb调试,用p /x v; p /x uv查看变量的值,提交调试结果截图,要全屏,要包含自己的学号信息
3、分析p /x v; p /x uv 与程序运行结果的不同和联系
课上编写完代码,在gdb调试中输入了题目要求的命令,但动作比较慢,没来得及提交上,课后下来上网查了查p/x v 和 p/x uv 之间的联系,也算get到一个知识点。
p/x v和 p/x uv之间的联系在于有符号数和无符号数之间的转换,其数值可能会变,但位模式不会变
课上测试-5-ch03
1、通过输入gcc -S -o main.s main.c将下面c程序编译成汇编代码
2、参考 博客使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况。提交照片,要有学号信息。
使用disassemble命令获取汇编代码,info registers查看寄存器的值。根据参考博客,ret命令将栈顶弹给%eip,在执行下一条汇编语句之前,设置:display /i $pc,此命令在每次程序中断后可以看到即将被执行的下一条汇编指令 ,/i表示以十六进制显示,$pc表示当前汇编命令,si执行一条汇编指令。将其变化记录即可。
2、缓冲区溢出漏洞实验
1、输入命令安装一些用于编译32位C程序的东西:
shellcode
一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其功能,输入shellcode.c
漏洞程序stack.c
程序会读取一个名为“badfile”的文件,并将文件内容装入“buffer”。
攻击程序exploit.c
“\x??\x??\x??\x??”
处需要添上shellcode保存在内存中的地址,因为发生溢出后这个位置刚好可以覆盖返回地址。
strcpy(buffer+100,shellcode); 这一句又告诉我们,shellcode保存在 buffer+100 的位置。
现在我们要得到shellcode在内存中的地址,需要gdb测试:
然后编译exploit.c程序:gcc -m32 -o exploit exploit.c
但不知道为什么我试了好几次,有出现段错误,然后又进行gdb测试,但后来一直出现“非法命令”,这点还未弄明白,后面我也会请教一下老师同学。
3、完成教材p97 2.96 2.97
2.96
题目:遵循位级浮点编码规则,实现如下原型的函数:
int float_f2i(float_bits f);
对于浮点数f,这个函数计算(int)f。如果f是NaN,你的函数一个向零舍入。如果f不能用整数表示(例如,超出表示范围,或者他是一个NaN),那么函数一应该返回0x80000000.测试你的函数,对参数f可以取得所有2^32个值求值,将结果与你使用的机器的浮点运算得到的结果相比较。
遇到的问题:
对‘pow’未定义的引用;导致编译不出来
解决过程:
使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。
知道后加上-lm,编译成功了
2.97
遵循位级浮点编码规则,实现具有如下原型的函数:
Compute (float) i
float_bitsfloat_i2f(inti);
对于参数i,这个函数计算(float)i的位级表示。
测试你的函数,对参数f可以取的所有2^32个值求值,将结果与你使用机器的浮点运算得到的结果相比较。
进行编译:
运行结果:
20155338 ch02 ch03课下作业的更多相关文章
- CH03 课下作业
CH03 课下作业 缓冲区溢出漏洞实验 缓冲区溢出攻击:通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的. 缓冲区溢出 ...
- 20155212 ch03 课下作业
T4 题目 通过输入gcc -S -o main.s main.c 将下面c程序"week0603学号.c"编译成汇编代码 int g(int x){ return x+3; } ...
- ch03 课下作业——缓冲区溢出漏洞实验
一.实验简介: 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭 ...
- 2018-2019-1 20165205 ch02 课下作业
ch02 课下作业 2.96 代码 #include <stdio.h> #include <stdlib.h> typedef unsigned float_bits; fl ...
- 20165302 ch02 课下作业
20165302 ch02 课下作业 作业内容 补充完成课上测试(不能只有截图,要有分析,问题解决过程,新学到的知识点) 完成教材 p97 2.96 2.97,要有完备的测试 发一篇相关内容的博客, ...
- 20155212 ch02 课下作业
20155212 ch02 课下作业 T1 题目 参考附图代码,编写一个程序 "week0601学号.c",判断一下你的电脑是大端还是小端 相关知识 小端法:最低有效字节在最前面 ...
- 2018-2019-1 20165330 《信息安全系统设计基础》第六周课上测试ch02&课下作业
课上测试 测试-3-ch02 任务详情 编写一个程序 "week0203学号.c",运行下面代码: 1 short int v = -学号后四位 2 unsigned short ...
- 20175221 MyCP(课下作业,必做)
MyCP(课下作业,必做) 任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: - java MyCP -tx XXX1.txt XXX2 ...
- 20175221 《Java程序设计》迭代和JDB(课下作业,选做):
20175221 <Java程序设计> 迭代和JDB(课下作业,选做): 任务详情 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功 ...
随机推荐
- 10、Node.js模块系统
##################################################################################介绍Node.js模块系统为了让No ...
- JVM线程状态,park, wait, sleep, interrupt, yeild 对比
---恢复内容开始--- JVM线程状态 NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED BLOCKED是等待获得对象锁 WAIT ...
- 面向对象的JavaScript --- 原型模式和基于原型继承的JavaScript对象系统
面向对象的JavaScript --- 原型模式和基于原型继承的JavaScript对象系统 原型模式和基于原型继承的JavaScript对象系统 在 Brendan Eich 为 JavaScrip ...
- R基础-适合于纯小白
#说明 文中‘test’均为模拟名称,原始编码为GKB方式###1.R语言介绍#### 偏统计 ###2.Rstudio和R的基本操作#### #2.1查看R语言自带的数据集#### data() # ...
- F2eTest和uirecorder自动化测试环境部署填坑记录
坑1:尝试部署的时候只在opennode.bat里面填写了两个浏览器,测试通过后再增加其他浏览器,页面上一直不显示. 填坑:需要清空数据库里的`wd_browsers`和`wd_nodes`表,然后重 ...
- 28、springboot整合RabbitMQ(2)
1.监听 1.1.监听队列 如订单系统和库存系统 订单系统下订单之后将消息存放在消息队列中 库存系统需要时刻进行监听消息队列的内容,有新的订单就需要进行库存相关的操作 此时模拟监听消息队列中的Bo ...
- robotframwork接口测试(四)—其他库的安装
怎么知道自己的RF已经有哪些库了,可以看python安装目录下Python27\Lib\site-packages这个文件夹,有的话就可以直接引入了. 没有的话,就安装了. 1. 命令安装:这种最方便 ...
- 【luogu P1608 路径统计】 题解
题目链接:https://www.luogu.org/problemnew/show/P1608 补上一发最短路计数! 感谢王强qwqqqq @Lance1ot #include <queue& ...
- PCA方法从原理到实现
一.简介 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题 ...
- 【Dubbo源码阅读系列】服务暴露之本地暴露
在上一篇文章中我们介绍 Dubbo 自定义标签解析相关内容,其中我们自定义的 XML 标签 <dubbo:service /> 会被解析为 ServiceBean 对象(传送门:Dubbo ...