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)的功 ...
随机推荐
- Redis 拒绝连接
1.本地防火墙是否关闭 2.服务器的防火墙是否关闭 检查方法: service iptables status 查看防火墙状态 service iptables s ...
- wooyun内网渗透教学分享之内网信息探测和后渗透准备
常规的,从web业务撕开口子url:bit.tcl.comgetshell很简单,phpcms的,一个Phpcms V9 uc api SQL的老洞直接getshell,拿到shell,权限很高,sy ...
- Bypass xss过滤的测试方法
0x00 背景 本文来自于<Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters>其中的byp ...
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
- yii2视频教材
http://www.weixistyle.com/ http://www.imooc.com/learn/743
- 使用iptables和tc对端口限速
首先,我们来看一下tc,TC(Traffic Control)命令,是linux自带的告警流控命令.Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制, ...
- Vue 子组件调用父组件 $emit
<!DOCTYPE html><html> <head> <meta charset="utf-8"> ...
- Week7:SVM难点记录
1.函数dataset3Params(),如何计算模型估计偏差的? model=svmTrain(X,y,c_array,@(x1,x2)gaussianKernel(x1,x2,sigma_arra ...
- HDU 1176 免费馅饼 (类似数字三角形的题,很经典,值得仔细理解的dp思维)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others) ...
- 用JavaScript编写气泡
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
