2019-2020-1 20175313 《信息安全系统设计基础》第三周学习总结

Posted xiannvyeye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019-2020-1 20175313 《信息安全系统设计基础》第三周学习总结相关的知识,希望对你有一定的参考价值。

一、教材学习内容总结

数据类型

技术图片

  • 注意:汇编代码也使用"l"来表示4字节整数和8字节双精度浮点数。这不会产生歧义,因为浮点数使用的是一组完全不同的指令和寄存器。

操作数

操作数可分为三种类型:
1. 立即数
2. 寄存器
3. 内存引用

技术图片

操作指示符

技术图片

过程

P调用Q:

  • call Q该指令会把P中call Q的下一条指令的地址A压入栈中,并把程序计数器设置为Q的代码的起始位置.
  • retq该指令会将地址A从栈中弹出,并将A赋值给PC

gdb调试

  • objdump -d mstore.o进行反汇编

    技术图片

缓冲区溢出

最小化程序缓冲区溢出攻击漏洞三种方式:

  1. 栈随机化:在程序开始之前,在栈上分配0-n字节之间程序不使用的随机大小空间,使得栈的位置在程序每次运行时都有变化。
  2. 栈破坏检测:在帧栈中任何局部缓冲区与栈状态之间存储一个特殊的金丝雀值,在恢复寄存器状态和从函数返回之前,检查金丝雀值是否被该函数的某个操作或者该函数调用的某个函数的某个操作改变了。以此来判断缓冲区是否溢出。
  3. 限制可执行代码区域:只有保存编译器产生的代码那部分内存才需要是可执行的,其他部分可以被限制为只允许读和写。以此来消除攻击者向系统中插入可执行代码的能力。

二、教材学习中的问题和解决过程

  • 问题1:对教材114页上的代码进行验证时,在进行汇编的时候,显示:错误:无效的选项参数‘-Og‘

技术图片

  • 解决方法1:将其改为gcc -O1 -c mstore.c,因为有的版本编译器不支持-Og

  • 运行结果如下:

    技术图片
    技术图片

  • 问题2:对于markdown的表格语法,在有道云上能够显示表格,但是传到博客园上就无法显示。

    技术图片

  • 解决方法2:未能解决。
  • 问题3:使用gdb对教材上的代码进行调试
  • 使用gcc -g week302.c -o week302进行汇编
  • 使用b f在f函数处设置一个断点
  • 使用run运行至断点处
  • 使用disas进行反汇编
  • 使用display /i $pc查看每次执行的汇编语句
  • 使用stepi每次运行一句汇编语句
  • 使用i r查看每个寄存器的值
  • 运行结果如下:

技术图片
技术图片
技术图片

三、心得体会

本周学习内容较为繁杂,只要之前的汇编课认真听讲,理解起来也虽然不是很难。

四、学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第三周 301/706 1/34 18/40
  • 计划学习时间:20小时

  • 实际学习时间:18小时

五、参考资料

以上是关于2019-2020-1 20175313 《信息安全系统设计基础》第三周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

2019-2020-1 20175313 《信息安全系统设计基础》第七周学习总结

2019-2020-1 20175313 《信息安全系统设计基础》第十周学习总结

2019-2020-1 20175313 《信息安全系统设计基础》第三周学习总结

2019-2020-1 20175313 《信息安全系统设计基础》第九周学习总结

2019-2020-1 20175313 20175328 20175329 实验三 实时系统的移植

2019-2020-1 20175313张黎仙《网络对抗技术》Exp4 恶意代码分析