20145319 逆向与Bof实验

1 实验内容

  • 本次实验以可执行文件pwn1为例,将对pwn1进行反汇编的基础上进行功能上的解读,并进行缓冲区溢出攻击
  • 可执行文件pwn1的正常流程是主函数调用foo函数完成字符串的录入和对录入字符串的重复输出,我们首先通过修改文件pwn1使其跳过foo函数转而执行getshell函数
  • 利用其对于缓冲区溢出漏洞进行攻击,通过调整输入字符串来覆盖原有返回地址,使程序执行我们想要其执行的函数getshell

2 实验步骤

  • 首先对于目标文件进行反汇编处理,输入命令objdump -d mypwn | more可以看到结果如下
  • 忽略掉其中与功能无关的部分,将整个反汇编代码浏览一遍,我们可以发现这个代码主要分成三部分,主函数,以及两个子函数foo子函数getShell
  • 首先从主函数的汇编代码来看,这个函数的功能十分简单,其中call 8048491就是调用函数foo,之后程序结束
  • 之后我们来看看函数foo的汇编代码部分,该函数实现了字符串的录入功能,其中汇编代码sub $0x38,%esp就是为字符串所预留出的寄存器空间,但是在不对缓冲区进行保护的情况下,我们就可以通过录入过长的字符串,而覆盖掉本在堆栈中的返回地址,从而达到我们想要实现的目的,实现缓冲区溢出攻击
  • 之后开始修改可执行文件中的机器码,让其可以按照我们想要的结果来运行,首先我们可以将主函数中call指令中的地址修改为getShell代码段地址,来看看getShell函数功能,用vim编辑器十六进制打开,并找到我们想修改的部分(详见所附操作指令)
  • 之后我们开始尝试进行缓冲区溢出攻击,来使程序达成同样的效果
  • 输入一串长字符串,直到程序反馈寄存器错误
  • 由反馈的结果来看eip中的地址已经变成了0x39393939即被四个9所覆盖,我们就需要调节我们所录入的字符串,并且观察到底是字符串中的哪几位覆盖住了返回地址即可
  • 由上一步我们可以基本可以确定覆盖住返回地址的四位字符正是字符串中的3456四位
  • 之后我们需要将字符串中的3456四位修改成getshell的内存地址0804847d,由上几步我们大致可以确定在计算机内部的字节顺序,注意修改字节顺序后我们只需将其新的字符串键入即可
  • 因为键盘上无法直接键入\x7d等十六进制数,因此我们先将其重定向至文件input中,之后通过管道将input文件中的内容作为输入来运行程序

3 shellcode注入

  • 我们可以通过写c语言程序或者直接写汇编程序两种方式来获得我们的shellcode,这里我们采用第二种方式
  • 首先编写shellcode的汇编代码
  • 之后通过反汇编得到其机器码组成,将其中的机器码摘出来就是我们需要使用的部分了
  • 首先做好准备工作,为了防止此类攻击,如今的计算机操作系统已经增加了许多保护措施,例如保护堆栈,使堆栈不可执行,又例如每一次生成代码的堆栈地址随机,来使得我们无法通过多次尝试来搜寻准确的返回地址,所以我们在准备阶段我们将这些保护功能都关闭(如果execstack显示command not found可以尝试apt-get install prelink
  • 构造注入字符串一般有两种策略,一是retaddr+nop+shellcode二是nop+shellcode+retaddr我们先把retaddr用数字5319来代替
  • 之后我们将文件执行挂在后台,打开另一个终端查看当前进程的进程号对其进行跟踪
  • 使用断点调试,观察注入的shellcode的地址所在
  • 观察可以看出shellcode的地址应该就是0xffffd330之后的一段区间,所以将返回地址修改成这段区间中的数值即可,修改后写入即可看到最后注入成功

4 其他

  • vim相关

    • %!xxd将文件显示变为十六进制模式
    • %!xxd -r将十六机制模式转回原格式
      • 在命令行模式下输入/即为查找,例如搜寻我们想要找到的e8 d7段,只需输入/e8 d7
    • 将文件转成十六进制模式下修改后要转回原格式才进行保存
  • 其他
    • Perl是一门解释型语言,不需要预编译,可以在命令行上直接使用

20145319 《网络对抗》逆向与Bof基础的更多相关文章

  1. 网络对抗实验一 逆向及Bof基础实践

    网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...

  2. 20145203盖泽双 《网络对抗技术》实践1—— MAL_逆向与Bof基础

    20145203盖泽双 <网络对抗技术> MAL_逆向与Bof基础 实践目标 (1)我们要通过修改程序代码,使得程序运行其自身中本不该运行的代码片段. (2)在这里,我们有一个名为2014 ...

  3. 20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

    20155201 李卓雯 <网络对抗技术>实验一 逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,f ...

  4. 20145308 《网络对抗》 逆向及BOF基础实践 学习总结

    20145308 <网络对抗> 逆向及BOF基础实践 学习总结 实践目的 通过两种方法,实现程序能够运行原本并不会被运行的代码 实践原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串 ...

  5. 20145236《网络对抗》Exp1 逆向及Bof基础

    20145236<网络对抗>Exp 1逆向及Bof基础 一.实践目标 运行原本不可访问的代码片段 强行修改程序执行流 以及注入运行任意代码. 二.基础知识及实践准备 理解EIP寄存器及其功 ...

  6. 20155305乔磊《网络对抗》逆向及Bof基础

    20155305乔磊<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...

  7. 20155311高梓云《网络对抗》逆向及Bof基础

    20155311高梓云<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

  8. 20155334 曹翔 《网络对抗》逆向及Bof基础

    20155334 曹翔 <网络对抗>逆向及Bof基础 实践目标: 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...

  9. 20145215卢肖明《网络对抗》逆向及Bof基础

    20145215卢肖明<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

  10. 20145206邹京儒《网络对抗》逆向及Bof基础实践

    20145206邹京儒<网络对抗>逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:ma ...

随机推荐

  1. MySql学习—— 查询性能优化 深入理解MySql如何执行查询

    本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...

  2. JavaScript实现本地图片上传预览功能(兼容IE、chrome、FF)

    需要解决的问题有:本地图片如何在上传前预览.编辑:最近发现这个功能很多是基于flash实现的,很多JavaScript实现的代码兼容性都很差,特别是在IE和firefox和chrome三个浏览器上不兼 ...

  3. poj_3067 树状数组

    题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...

  4. poj_2286 IDA*

    题目大意 给定一个由数字组成的#字型网格,和一定的移动规则,问最少需要多少次移动才能达到要求的结果. 题目分析 要求最少需要几步到达结果,可以考虑广度优先搜索算法,或者迭代加深深度优先搜索(IDA*) ...

  5. Vue基础---->vue-router的使用(一)

    用 Vue.js + vue-router 创建单页应用,是非常简单的.使用 Vue.js 时,我们就已经把组件组合成一个应用了,当你要把 vue-router 加进来,只需要配置组件和路由映射,然后 ...

  6. 简单的网络爬虫程序(Web Crawlers)

    程序比较简单,但是能体现基本原理. package com.wxisme.webcrawlers; import java.io.*; import java.net.*; /** * Web Cra ...

  7. SenchaTouch调用纯数字键盘

    items:[ { itemId:"phoneNumber", xtype: "textfield", component:{xtype:"input ...

  8. html to pdf小工具,支持evernote导出的html和firefox插件scrapbook

    周末花了一天时间用wpf写了一个html转换为pdf的小工具. 已经在win7 32位 和win8 64两台机器上测试,目前基本可用,特拿来分享. 程序下载地址:http://pan.baidu.co ...

  9. 关于word文档转成html网页的方法

    在工作中,有时我们可能需要将一个word文档转换成html网页格式,如在写帮助文档的时候,采用office编写,最终却想以网页的格式传到网站的指定目录下供网友直接浏览 这时我们就需要对word文件进行 ...

  10. 【BZOJ2743】[HEOI2012]采花 离线+树状数组

    [BZOJ2743][HEOI2012]采花 Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花, ...