2017-2018-1 20155321 《信息安全系统设计基础》课下作业3

课堂练习第五题

  • 因为虚拟机是64位的,所以先输入命令sudo apt-get install libc6-dev-i386为配置32位环境做准备

  • 使用gdb调试器,调出汇编代码

  • 使用命令l查看代码并使用命令b 13在main()处设置断点,后再输入命令run,使用命令disassemble获取汇编代码,输入命令info registers查看当前各寄存器的值

    可见此时主函数的栈基址为0xffffd048,查看其内容为0

  • 输入命令display /i $pc使得每次执行下一条汇编语句时,均打印出当前执行的代码

  • 调用f函数,call指令将下一句要执行的指令的地址入栈

  • 将f函数的基地址入栈,可发现sp寄存器的值发生变化

  • 执行sub语句

  • 执行赋值语句

  • f函数的汇编代码

  • 实参入栈:

  • call指令将下一条指令的地址入栈:

  • 执行系列运算指令


  • pop %ebp指令将栈顶弹到%ebp中,同时%esp增加4字节:

  • ret指令将栈顶弹给%eip:

  • 因为函数f修改了%esp,所以用leave指令恢复。leave指令先将%esp对其到%ebp,然后把栈顶弹给%ebp:

缓冲区溢出漏洞实验

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

  • 因实验楼提供的是64位的环境,因此首先要配置32位的环境,输入以下三个命令,为之后的实验做好准备

sudo apt-get updatesudo apt-get install lib32z1 libc6-dev-i386sudo apt-get install lib32readline-gplv2-dev

  • 输入命令sudo sysctl -w kernel.randomize_va_space=0关闭系统使用地址空间随机化来随机堆和栈的初始地址

  • 创建另一个shell程序(zsh)代替/bin/bash

  • 编写漏洞程序

  • 编译stack.c程序并设置SET-UID

  • 编写攻击程序

  • 得到shellcode在内存中的地址

  • 计算shellcode的地址并修改exploit.c中\x??\x??\x??\x??代码,如下图所示:

  • 运行攻击程序exploit和漏洞程序stack,通过攻击得到root权限

转载于:https://www.cnblogs.com/rafell/p/7750032.html

2017-2018-1 20155321 《信息安全系统设计基础》课下作业3相关推荐

  1. 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd

    2017-2018-1 20155336 <信息安全系统设计基础>加分作业:实现mypwd 什么是PWD? 用man pwd查看: 用于打印当前工作目录的工作路径 1.命令格式:pwd[选 ...

  2. 2017-2018-1 20155321 20155330 《信息安全系统设计基础》实验四——外设驱动程序设计...

    2017-2018-1 20155321 20155330 <信息安全系统设计基础>实验四--外设驱动程序设计 任务一 学习资源中全课中的"hqyj.嵌入式Linux应用程序开发 ...

  3. 2018-2019-1 20165318《信息安全系统设计基础》第八周课上测试

    2018-2019-1 20165318<信息安全系统设计基础>第八周课上测试 测试-1-ch03 任务详情 通过输入gcc -S -o main.s main.c,将下面c程序" ...

  4. 2017-2018-1 《信息安全系统设计基础》课下测试错题汇总

    2017-2018-1 <信息安全系统设计基础>课下测试错题汇总 (多选题|1分)假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是() A.若t==0,则ZF= ...

  5. 2017-2018-1 20155308 《信息安全系统设计基础》第二周测试(课上+课下)

    2017-2018信息安全系统设计基础 课堂测试 这次课堂测试我的前四项都已经完成,但是感觉自己对Linux环境还是不太了解,所以写了这篇博客总结一下这次课堂测试做题的方法和注意事项 1-vi 要求: ...

  6. 20155308 《信息安全系统设计基础》课程总结

    20155308 <信息安全系统设计基础>课程总结 每周作业链接汇总 第一周作业:第一章<计算机系统漫游>第七章<链接> 第二周作业:第二周课上+课下测试 第三周作 ...

  7. 2017-2018-1 20155204 《信息安全系统设计基础》第十一周学习总结

    2017-2018-1 20155204 <信息安全系统设计基础>第十一周学习总结 教材学习内容总结 9.1物理和虚拟地址 物理地址:计算机系统的主存被组织成一个人由M个连续的字节到校的单 ...

  8. 20155328 《信息安全系统设计基础》第六周 课堂提交补充

    20155328 <信息安全系统设计基础>第六周 课堂提交补充 第六周课上测试-3 编写一个程序w0603,运行以下代码: short int v=-学号后四位; unsigned sho ...

  9. 2018-2019-1 20165206 《信息安全系统设计基础》第九周学习总结

    - 2018-2019-1 20165206 <信息安全系统设计基础>第九周学习总结 - 教材学习内容总结 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组.每个字节都有一 ...

最新文章

  1. 批量创建用户和设置密码
  2. vba代码编程800例_VBA编程常用“积木”过程代码Address的含义
  3. laravel路由无法访问,报404,No query results for model [App\Models\...]
  4. java table修改指定行_(变强、变秃)Java从零开始之JQuery购物车功能实操
  5. python中列表如何比较大小_如何比较python中的列表/列表?
  6. Android Progurad 代码混淆
  7. manjaro配置zsh和oh-my-zsh
  8. java 记录用户_JavaWeb学习记录(六)——用户登录功能
  9. 有佳文档管理v2.03
  10. 将ip地址转换为点分十进制表示
  11. 关于无法在驱动器0分区上安装Windows
  12. 计算机桌面图标有哪两类,电脑桌面图标箭头,电脑桌面图标有两个箭头
  13. ASP.NET删除服务器端文件,asp.net删除服务器文件
  14. 近几天,被这个国家的最高科技奖刷屏了~
  15. java action接口,Struts2 Action接口与ActionSupport类
  16. linu重置root密码(CentOS7)
  17. 本周上榜的这9本原创技术书很赞,《数学之美》作者吴军博士新书霸榜
  18. 2018年,Java程序员转型大数据开发,是不是一个好选择?
  19. mysql如何重复数据合并_mysql合并相同字段,不同的拼接在起后
  20. onclick绑定多事件

热门文章

  1. Node.js 多版本安装方式
  2. 计算机二级vb知识点汇总,计算机二级vb基础知识考点整理(13页)-原创力文档...
  3. 【MySQL】MySQL开发注意事项与SQL性能优化步骤
  4. laravel的redis配置,一直报错Class 'Predis\Client' not found
  5. 微信JS-SDK使用步骤(以微信扫一扫为例)
  6. JSON.stringify()和JSON.parse()分别是什么
  7. SQL Between a and b
  8. 添加串口和虚拟终端输出帮助调试
  9. Qt quick 编程
  10. C# Sqlite数据库 基本使用方法