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马超 《网络对抗》第一次作业相关推荐

  1. 中国人民公安大学网络对抗技术作业一

    中国人民公安大学网络对抗技术作业 姓名:王开君 学号:201521450020 指导教师:高见 实验日期:2018年9月9日 1.虚拟机安装(以Linux为例) 下载VMware,下载kali Lin ...

  2. Unix网络编程---第一次作业

    Unix网络编程---第一次作业   要求: 客户端:从命令行读入服务器的IP地址:并连接到服务器: 服务器端:    接受客户的连接请求,并显示客户的IP地址和端口号. 实现代码: 1.客户端程序: ...

  3. 中国人民公安大学(PPSUC)网络对抗技术作业

    中国人民公安大学(PPSUC)网络对抗技术作业 姓名:冷其航 学号:201421420042 指导老师:高见 1.虚拟机安装与调试 安装windows和linux(kali)两个虚拟机,均采用NAT网 ...

  4. 网络对抗技术作业一 201421410031

    姓名:李冠华 学号:201421410031 指导教师:高见 1.虚拟机安装与调试 ·安装windows和linux(kali)两个虚拟机,均采用NAT网络模式,查看主机与两个虚拟机器的IP地址,并确 ...

  5. 中国人民公安大学 网络对抗技术作业一

    姓名:吴昊 学号: 201521410016 指导教师:高见                实验日期:2018年9月8日 1.虚拟机安装与调试 安装windows和linux(kali)两个虚拟机,均 ...

  6. 中国人民公安大学(PPSUC) 网络对抗技术作业

    姓名:宋欣雨 学号: 201521420046 指导教师:高见                实验日期:2018年3月10日 1. 虚拟机安装与调试 安装windows和linux(kali)两个虚拟 ...

  7. 中国人民公安大学(PPSUC) 网络对抗技术作业-实验一

    姓名:张凯强 学号:201521430004 指导教师:高见                实验日期:2018年9月8日 1. 虚拟机安装与调试 安装windows和linux(kali)两个虚拟机, ...

  8. 网络对抗技术作业一P201421410036

    姓名:王懿天 学号:201421410036 指导教师:高见 1.虚拟机安装与调试 ·安装windows和linux(kali)两个虚拟机,均采用NAT网络模式,查看主机与两个虚拟机器的IP地址,并确 ...

  9. 网络服务第一次作业(atd,crond)

    1,atd和crondl两个任务管理程序的区别 atd是单一执行的例行性工作 :单一执行的例行性工作:仅处理执行一次就结束了: crontab是循环执行的例行性工作:每隔一定的周期就需要执行一次.(循 ...

  10. 中国人民公安大学(PPSUC) 网络对抗技术第一次作业

    中国人民公安大学 网络对抗技术作业一 姓名:刘旭东 学号:201521420011 指导老师:高见 实验日期:2018年9月10日 1.虚拟机的安装与调试 创建一台虚拟机 安装kali虚拟机 kali ...

最新文章

  1. 代码生成器:IDEA 强大的 Live Templates
  2. java未知对象调用其某个方法_java如何调用一个方法内的对象
  3. 算法提高 学霸的迷宫
  4. 配置文件值注入 ||导入配置文件处理器,以后编写配置就有提示
  5. BOM操作及DOM表单案例练习
  6. 百度图神经网络——论文节点比赛baseline代码注解
  7. 2019-11-20 c语言参考手册
  8. zxr10交换机配置手册vlan_最新中兴ZXR10交换机配置资料
  9. ntp服务器的搭建(内网时钟服务区的搭建)
  10. GD32E230开发初体验
  11. Oracle函数HEXTORAW乱码,Oracle常用函数之HEXTORAW
  12. lt18i android 2.3.4典藏版,索尼LT18i一键ROOT教程工具 2.3.4已亲测成功
  13. Excel中Match()函数使用方法
  14. JavaScript 每日一题 #11
  15. 双十一峰值流量_“双十一”的九个底层逻辑:流量补刀、透支消费等
  16. error: ‘path_wts’ does not name a type
  17. 计算机如何与机顶盒连接网络连接网络连接,如何将机顶盒连接到计算机
  18. 10-230 查询计算机工程专业学生选修但软件工程专业学生没有选修的课程
  19. uniapp小程序发布过程中,图片跟音频资源超过200K无法上传
  20. 虹科网络流量监控软件解决方案(二)-- 网络探针nProbe

热门文章

  1. Field-of-view of lenses by focal length
  2. 【Neuralink与大脑的神奇未来】Part 6:大融合
  3. Python之函数重写(系统函数的重写,自定义函数的重写)
  4. Markdwon入门语法
  5. 病历开发SDK:TX Text Control ActiveX 31.x Crack
  6. Android开发:App点击跳转到网页的实现
  7. 凡科建站上传html,如何将自己设计的网页上传到网站上?如何把自己制作的网页上网?自己在本地建的网站,别人怎么访问?...
  8. 揭露人性丑恶的五大心理实验
  9. 星巴克店铺数据集描述性分析
  10. 两个矩形相交的面积c语言,关于算法:两个旋转矩形的相交面积