课上测试

测试-3-ch02

  1. 任务详情
  • 编写一个程序 “week0203学号.c",运行下面代码:
   1 short int v = -学号后四位
2 unsigned short uv = (unsigned short) v
3 printf("v = %d, uv = %u\n ", v, uv);
  • 在第三行设置断点用gdb调试,用p /x v; p /x uv 查看变量的值,提交调试结果截图,要全屏,要包含自己的学号信息
  • 分析p /x v; p /x uv 与程序运行结果的不同和联系
  1. 相关知识
  • 有符号和无符号数之间的转换

    • C语言允许在各种不同的数字数据类型之间做强制类型转换。
    • 强制类型转换的结果保持位值不变,只是改变了解释这些位的方式。
  • gdb调试
    • b (line number):在某行设置行断点
    • r:运行
    • c:继续运行
    • p:print
    • /x:十六进制
    • q:退出gdb
  • p/x v和 p/x uv之间的联系在于有符号数和无符号数之间的转换,其数值可能会变,但位模式不会变
  1. 代码
#include<stdio.h>

void main(){
short int v = -5212;
unsigned short uv = (unsigned short) v;
printf("v = %d, uv = %u\n ", v, uv);
}
  1. 运行结果

课下作业

缓冲区溢出漏洞实验

缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

  1. 实验准备

  2. 实验步骤及过程
    • 关闭猜测内存地址功能

    • 设置 zsh 程序进一步防范缓冲区溢出攻击及其它利用 shell 程序的攻击

    • 进入32位linux环境,输入“/bin/bash”使用bash进行Tab补全

    • shellcode:用来发送到服务器利用特定漏洞的代码,一般可以获取权限

    • 编译漏洞程序并设置 SET-UID(其中需要用 –fno-stack-protector关闭栈的保护机制以阻止其阻止缓冲区溢出,-z execstack 用于允许执行栈)

    • 攻击漏洞程序,并通过攻击获得 root 权限
      • 编写exploit.c(在代码中要找到shellcode在内存中的地址,并于0x64进行加运算得到0xffffd0c4填入exploit.c

      • 编译exploit.cgcc -m32 -o exploit exploit.c
    • 攻击结果
      • 运行攻击程序:./exploit
      • 运行漏洞程序:./stack.c
  3. 实验结果

实验中遇到的问题

  • 在最后进行攻击时运行结果一直显示“段错误”,我查看之前的步骤做了好几遍还是这样

解决办法:最后我发现我第一次做的时候在进行一些准备设置后,退出了linux32系统,在实验楼中开始进行后续的创建c文件,又进入到了linux32字运行,这是错误的,实验全程应在linux32环境中进行,我把之前创建的文件全部删除重新创建后运行成功。

2018-2019-1 20165330 《信息安全系统设计基础》第六周课上测试ch02&课下作业的更多相关文章

  1. 2017-2018-1 20155318 《信息安全系统设计基础》第九周课下实践——实现mypwd

    2017-2018-1 20155318 <信息安全系统设计基础>第九周课下实践--实现mypwd 相关知识 man -k 查找含有关键字的内容 与管道命令结合使用:man -k k1 | ...

  2. 20155216 2017-2018-1 《信息安全系统设计基础》第二周课堂练习补交以及Myod的实现

    20155216 2017-2018-1 <信息安全系统设计基础>第二周课堂练习补交 课堂测试3:行断点的设置 运行截图: 未完成原因:课前未安装 cgdb 具体步骤: 1.输入命令:gc ...

  3. # 20155337 2017-2018-1 《信息安全系统设计基础》第二周课堂实践+myod

    20155337 2017-2018-1 <信息安全系统设计基础>第二周课堂实践+myod 因为在课上已经提交了四个实验,还欠缺最后一个实验,反省一下自己还是操作不熟练,平时在课下应该多多 ...

  4. 20165223《信息安全系统设计基础》第九周学习总结 & 第八周课上测试

    目录 [第九周学习总结] 教材内容总结 [第八周课上测试] (一)求命令行传入整数参数的和 (二)练习Y86-64模拟器汇编 (三)基于socket实现daytime(13)服务器和客户端 参考资料 ...

  5. 20155325 2017-2018 1 课上测试、课下作业、实验——码云&博客链接汇总 《信息安全系统设计基础》

    第二周-课上 码云 https://gitee.com/bestiisjava2017/XinXiAnQuanXiTongSheJiJiChu20155325thl/tree/master/0927 ...

  6. 20135234mqy-——信息安全系统设计基础第六周学习总结

    处理器体系结构 4.1 Y86指令集体系结构 4.1.1程序员可见状态 Y86程序中的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态. 4.1.2 Y86指令 4个指令:irmovl, ...

  7. 2017-2018-1 20155313 《信息安全系统设计基础》 Myod

    2017-2018-1 20155313 <信息安全系统设计基础> Myod Myod要求 1.复习c文件处理内容 2.编写myod.c 用myod XXX实现Linux下od -tx - ...

  8. 20145213《信息安全系统设计基础》实验一 Linux开发环境的配置

    北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名: 黄亚奇 祁玮 学号:20145213 20145222 成绩: 指导教师:娄嘉鹏 实验日期:2016 ...

  9. 20145215&20145307《信息安全系统设计基础》实验二 固件设计

    20145215&20145307<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux ...

随机推荐

  1. location 将多级目录下的文件转成一个文件

    /ck-135-201-7142.html 指向/ck/135/201/7142.html [root@web01 www]# cat /app/server/nginx/conf/rewrite/d ...

  2. Nginx - Windows下Nginx初入门,附CentOS下Nginx的安装

    公司刚使用nginx,预先学习下.鉴于机器没有Linux环境,在Windows熟悉下. 下载 目前(2015-07-11),nginx的稳定版本是1.8.0,在官网下载先,windows版的nginx ...

  3. js中如何判断一个字符串包含另外一个字符串?

    js中判断一个字符串包含另外一个字符串的方式比较多? 比如indexOf()方法,注意O是大写. var test="this is a test"; if(test.indexO ...

  4. js 去html 标签

    var stylereg = /style\=".+?"/g //去style样式 var alltagreg = /<[^>]*>/g //去除全部标签 var ...

  5. 跟着百度学习php之ThinkPHP的运行流程-2

    Thinkphp为了提高编译的效率,第一次运行的时候thinkphp会把文件全部编译到temp目录下的~runtime.php文件,在第二次运行的时候会直接读取这个文件.所以我们在线下自己写代码测试的 ...

  6. 原创jQuery插件之图片自适应

    效果图例如以下: 功能:使图片自适应居中位于容器内 限制:容器须要给定大小 用法: 1.引入jQuery.然后引入fitimg插件 2.给须要图片自适应的容器固定宽高 3.header .accoun ...

  7. spark读取本地文件

    /** * Read a text file from HDFS, a local file system (available on all nodes), or any * Hadoop-supp ...

  8. ubuntu 14.04/16.04/18.04 yum安装 zabbix-agent 教程

    备忘 环境:Ubuntu 14.04 基于官网配置官网链接 ①导入源: ### Ubuntu 18.04 # wget https://repo.zabbix.com/zabbix/3.4/ubunt ...

  9. Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性

    Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性. Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型. Final和abstrac ...

  10. vue-cli打包构建时常见的报错解决方案

    报错1:vue-cli项目本地npm run dev启动后,chrome打开是空白页 解决方案:将config下的index.js中的assetsPublicPath路径都设置为‘/’绝对路径 报错2 ...