2017-2018-1 20155321 《信息安全系统设计基础》课下作业3
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相关推荐
- 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd
2017-2018-1 20155336 <信息安全系统设计基础>加分作业:实现mypwd 什么是PWD? 用man pwd查看: 用于打印当前工作目录的工作路径 1.命令格式:pwd[选 ...
- 2017-2018-1 20155321 20155330 《信息安全系统设计基础》实验四——外设驱动程序设计...
2017-2018-1 20155321 20155330 <信息安全系统设计基础>实验四--外设驱动程序设计 任务一 学习资源中全课中的"hqyj.嵌入式Linux应用程序开发 ...
- 2018-2019-1 20165318《信息安全系统设计基础》第八周课上测试
2018-2019-1 20165318<信息安全系统设计基础>第八周课上测试 测试-1-ch03 任务详情 通过输入gcc -S -o main.s main.c,将下面c程序" ...
- 2017-2018-1 《信息安全系统设计基础》课下测试错题汇总
2017-2018-1 <信息安全系统设计基础>课下测试错题汇总 (多选题|1分)假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是() A.若t==0,则ZF= ...
- 2017-2018-1 20155308 《信息安全系统设计基础》第二周测试(课上+课下)
2017-2018信息安全系统设计基础 课堂测试 这次课堂测试我的前四项都已经完成,但是感觉自己对Linux环境还是不太了解,所以写了这篇博客总结一下这次课堂测试做题的方法和注意事项 1-vi 要求: ...
- 20155308 《信息安全系统设计基础》课程总结
20155308 <信息安全系统设计基础>课程总结 每周作业链接汇总 第一周作业:第一章<计算机系统漫游>第七章<链接> 第二周作业:第二周课上+课下测试 第三周作 ...
- 2017-2018-1 20155204 《信息安全系统设计基础》第十一周学习总结
2017-2018-1 20155204 <信息安全系统设计基础>第十一周学习总结 教材学习内容总结 9.1物理和虚拟地址 物理地址:计算机系统的主存被组织成一个人由M个连续的字节到校的单 ...
- 20155328 《信息安全系统设计基础》第六周 课堂提交补充
20155328 <信息安全系统设计基础>第六周 课堂提交补充 第六周课上测试-3 编写一个程序w0603,运行以下代码: short int v=-学号后四位; unsigned sho ...
- 2018-2019-1 20165206 《信息安全系统设计基础》第九周学习总结
- 2018-2019-1 20165206 <信息安全系统设计基础>第九周学习总结 - 教材学习内容总结 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组.每个字节都有一 ...
最新文章
- 批量创建用户和设置密码
- vba代码编程800例_VBA编程常用“积木”过程代码Address的含义
- laravel路由无法访问,报404,No query results for model [App\Models\...]
- java table修改指定行_(变强、变秃)Java从零开始之JQuery购物车功能实操
- python中列表如何比较大小_如何比较python中的列表/列表?
- Android Progurad 代码混淆
- manjaro配置zsh和oh-my-zsh
- java 记录用户_JavaWeb学习记录(六)——用户登录功能
- 有佳文档管理v2.03
- 将ip地址转换为点分十进制表示
- 关于无法在驱动器0分区上安装Windows
- 计算机桌面图标有哪两类,电脑桌面图标箭头,电脑桌面图标有两个箭头
- ASP.NET删除服务器端文件,asp.net删除服务器文件
- 近几天,被这个国家的最高科技奖刷屏了~
- java action接口,Struts2 Action接口与ActionSupport类
- linu重置root密码(CentOS7)
- 本周上榜的这9本原创技术书很赞,《数学之美》作者吴军博士新书霸榜
- 2018年,Java程序员转型大数据开发,是不是一个好选择?
- mysql如何重复数据合并_mysql合并相同字段,不同的拼接在起后
- onclick绑定多事件
热门文章
- Node.js 多版本安装方式
- 计算机二级vb知识点汇总,计算机二级vb基础知识考点整理(13页)-原创力文档...
- 【MySQL】MySQL开发注意事项与SQL性能优化步骤
- laravel的redis配置,一直报错Class 'Predis\Client' not found
- 微信JS-SDK使用步骤(以微信扫一扫为例)
- JSON.stringify()和JSON.parse()分别是什么
- SQL Between a and b
- 添加串口和虚拟终端输出帮助调试
- Qt quick 编程
- C# Sqlite数据库 基本使用方法