20145202马超 《网络对抗》第一次作业
http://www.cnblogs.com/lxm20145215----/p/6486204.html
实验目标:
本次实践的对象是一个名为pwn20145202的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。
使用两种方法:
1.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
2.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
这几种思路,基本代表现实情况中的攻击目标
(1)运行原本不可访问的代码片段
(2)强行修改程序执行流
(3)以及注入运行任意代码
1 直接修改程序机器指令,改变程序执行流程
"call 8048491 "是汇编指令,是说这条指令将调用位于地址8048491处的foo函数;其对应机器指令为“e8 d7ffffff”,e8即跳转之意。本来正常流程,此时此刻EIP的值应该是下条指令的地址,即80484ba,但一解释e8这条指令呢,CPU就会转而执行 “EIP + d7ffffff”这个位置的指令。“d7ffffff”是补码,表示-41,41=0x29,80484ba +d7ffffff= 80484ba-0x29正好是8048491这个值,
main函数调用foo,对应机器指令为“ e8 d7ffffff”,那我们想让它调用getShell,只要修改“d7ffffff”为,"getShell-80484ba"对应的补码就行。用Windows计算器,直接 47d-4ba就能得到补码,是c3ffffff。
下面我们就修改可执行文件,将其中的call指令的目标地址由d7ffffff变为c3ffffff。
以下操作是在vi内
1.按ESC键
2.输入如下,将显示模式切换为16进制模式
:%!xxd
3.查找要修改的内容
/e8d7
4.找到后前后的内容和反汇编的对比下,确认是地方是正确的
5.修改d7为c3
6.转换16进制为原格式
:%!xxd -r
7.存盘退出vi
:wq
8.再反汇编看一下,call指令是否正确调用getShell
2 通过构造输入参数,造成BOF攻击,改变程序执行流
发现该可执行文件正常运行是调用如下函数foo,这个函数有Buffer overflow漏洞
==上面的call调用foo,同时在堆栈上压上返回地址值:80484ba==
为了确定使用多少个字节才会使缓冲区溢出,这里使用暴力破解法,及一个一个字符添加直到出现Segmentation fault字样。
毋庸置疑,答案是27字节
但是我们的目标是将寄存器%eip的值给覆盖掉,并非单纯地找到溢出长度
这里使用GDB调试:
同时查看每个寄存器的值,查看的关键是寄存器eip的值
再次调试查看是哪个字符被覆盖到了eip中:
如果输入字符串1111111122222222333333334444444412345678,那 1234 那四个数最终会覆盖到堆栈上的返回地址,进而CPU会尝试运行这个位置的代码。那只要把这四个字符替换为 getShell 的内存地址,输给pwn20145320,pwn20145320就会运行getShell。
getShell的内存地址是0804847d。
接下来要确认下字节序(这里是低字节放在高位的大端法),简单说是输入11111111222222223333333344444444\x7d\x84\x04\x08。(前面32字节可以任意输入)。
由为我们没法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件。\x0a表示回车,如果没有的话,在程序运行时就需要手工按一下回车键。
毋庸置疑,成功了。
3.试验的反思
我感觉如果我当时要是申请课题负责人就好了
转载于:https://www.cnblogs.com/tuolemi/p/6501193.html
20145202马超 《网络对抗》第一次作业相关推荐
- 中国人民公安大学网络对抗技术作业一
中国人民公安大学网络对抗技术作业 姓名:王开君 学号:201521450020 指导教师:高见 实验日期:2018年9月9日 1.虚拟机安装(以Linux为例) 下载VMware,下载kali Lin ...
- Unix网络编程---第一次作业
Unix网络编程---第一次作业 要求: 客户端:从命令行读入服务器的IP地址:并连接到服务器: 服务器端: 接受客户的连接请求,并显示客户的IP地址和端口号. 实现代码: 1.客户端程序: ...
- 中国人民公安大学(PPSUC)网络对抗技术作业
中国人民公安大学(PPSUC)网络对抗技术作业 姓名:冷其航 学号:201421420042 指导老师:高见 1.虚拟机安装与调试 安装windows和linux(kali)两个虚拟机,均采用NAT网 ...
- 网络对抗技术作业一 201421410031
姓名:李冠华 学号:201421410031 指导教师:高见 1.虚拟机安装与调试 ·安装windows和linux(kali)两个虚拟机,均采用NAT网络模式,查看主机与两个虚拟机器的IP地址,并确 ...
- 中国人民公安大学 网络对抗技术作业一
姓名:吴昊 学号: 201521410016 指导教师:高见 实验日期:2018年9月8日 1.虚拟机安装与调试 安装windows和linux(kali)两个虚拟机,均 ...
- 中国人民公安大学(PPSUC) 网络对抗技术作业
姓名:宋欣雨 学号: 201521420046 指导教师:高见 实验日期:2018年3月10日 1. 虚拟机安装与调试 安装windows和linux(kali)两个虚拟 ...
- 中国人民公安大学(PPSUC) 网络对抗技术作业-实验一
姓名:张凯强 学号:201521430004 指导教师:高见 实验日期:2018年9月8日 1. 虚拟机安装与调试 安装windows和linux(kali)两个虚拟机, ...
- 网络对抗技术作业一P201421410036
姓名:王懿天 学号:201421410036 指导教师:高见 1.虚拟机安装与调试 ·安装windows和linux(kali)两个虚拟机,均采用NAT网络模式,查看主机与两个虚拟机器的IP地址,并确 ...
- 网络服务第一次作业(atd,crond)
1,atd和crondl两个任务管理程序的区别 atd是单一执行的例行性工作 :单一执行的例行性工作:仅处理执行一次就结束了: crontab是循环执行的例行性工作:每隔一定的周期就需要执行一次.(循 ...
- 中国人民公安大学(PPSUC) 网络对抗技术第一次作业
中国人民公安大学 网络对抗技术作业一 姓名:刘旭东 学号:201521420011 指导老师:高见 实验日期:2018年9月10日 1.虚拟机的安装与调试 创建一台虚拟机 安装kali虚拟机 kali ...
最新文章
- 代码生成器:IDEA 强大的 Live Templates
- java未知对象调用其某个方法_java如何调用一个方法内的对象
- 算法提高 学霸的迷宫
- 配置文件值注入 ||导入配置文件处理器,以后编写配置就有提示
- BOM操作及DOM表单案例练习
- 百度图神经网络——论文节点比赛baseline代码注解
- 2019-11-20 c语言参考手册
- zxr10交换机配置手册vlan_最新中兴ZXR10交换机配置资料
- ntp服务器的搭建(内网时钟服务区的搭建)
- GD32E230开发初体验
- Oracle函数HEXTORAW乱码,Oracle常用函数之HEXTORAW
- lt18i android 2.3.4典藏版,索尼LT18i一键ROOT教程工具 2.3.4已亲测成功
- Excel中Match()函数使用方法
- JavaScript 每日一题 #11
- 双十一峰值流量_“双十一”的九个底层逻辑:流量补刀、透支消费等
- error: ‘path_wts’ does not name a type
- 计算机如何与机顶盒连接网络连接网络连接,如何将机顶盒连接到计算机
- 10-230 查询计算机工程专业学生选修但软件工程专业学生没有选修的课程
- uniapp小程序发布过程中,图片跟音频资源超过200K无法上传
- 虹科网络流量监控软件解决方案(二)-- 网络探针nProbe
热门文章
- Field-of-view of lenses by focal length
- 【Neuralink与大脑的神奇未来】Part 6:大融合
- Python之函数重写(系统函数的重写,自定义函数的重写)
- Markdwon入门语法
- 病历开发SDK:TX Text Control ActiveX 31.x Crack
- Android开发:App点击跳转到网页的实现
- 凡科建站上传html,如何将自己设计的网页上传到网站上?如何把自己制作的网页上网?自己在本地建的网站,别人怎么访问?...
- 揭露人性丑恶的五大心理实验
- 星巴克店铺数据集描述性分析
- 两个矩形相交的面积c语言,关于算法:两个旋转矩形的相交面积