20145210姚思羽《网络对抗技术》逆向及Bof基础实践

实践目标

1.本次实践的对象是一个名为pwn1的linux可执行文件。

2.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。

3.该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。

4.我们将学习两种方法

(1)利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。

(2)手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。

5.现实情况中的攻击目标

(1)运行原本不可访问的代码片段

(2)强行修改程序执行流

(3)以及注入运行任意代码

基础知识

掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码:

(1)NOP:NOP指令为空指令,运行时CPU什么都不做,但是会占用一个指令的时间,通常用于延时或等待

(2)JNE:条件转移指令,当不相等时跳转,机器码为75

(3)JE:条件跳转指令,当相等时跳转,机器码为74

(4)JMP:无条件跳转指令

(5)CMP:比较指令,比较两个操作数的大小,用第一个操作数减去第二个操作数,但是不影响两个操作数的值,但会影响标志寄存器

直接修改程序机器指令,改变程序执行流程

知识点要求:

(1)call指令,EIP寄存器,指令跳转的偏移计算:EIP(new)=EIP+x(在本次试验中,要让程序执行getShell函数,通过计算0804847d-80484ba结果的补码为c3ffffff,将call指令的目标地址由d7ffffff变为c3ffffff即可)

(2)反汇编指令objdump

(3)将文件转为十六进制的指令:%!xxd

(4)补码:d7ffffff是-41的补码表示

1.进入文件得到乱码,输入指令:%!xxd得到十六进制表示模式,在文件中找到e8d7,并进行修改:

2.转换为原格式,保存退出

3.反汇编查看call已调用getShall:

4.运行修改后的代码,得到shell提示符#:

通过构造输入参数,造成BOF攻击,改变程序执行流

·分析反汇编代码发现该文件正常会调用foo函数,但该函数有这个函数有Buffer overflow漏洞,只预留了一定字节的缓冲区,超出部分会造成溢出,getShell函数可实现shell,我们的目标是触发geyShell函数

1.使用gdb调试,输入1111111122222222333333334444444455555555

2.观察到寄存器eip的值为0x35353535,即5555,可以看出下一步要执行指令的地址为5555,即5555将本来要返回的foo函数的地址覆盖掉了

3.将55555555换成12345678,查看具体是哪个字符将foo函数的地址覆盖了

4.寄存器eip的值变为0x34333231,即1234,可以看出是1234覆盖了其新的eip,所以我们可用getshell的内存地址替换这4个字符即可触发getShell函数。

5.getShell的内存地址是0804847d,替换后即11111111222222223333333344444444\x7d\x84\x04\x08

6.我们无法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件:

perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input

再使用16进制查看指令xxd查看input文件的内容:

7.将input的输入,通过管道符“|”,作为pwn1的输入来跳转至getShell:

20145210姚思羽《网络对抗技术》逆向及Bof基础实践的更多相关文章

  1. 20145304 网络对抗技术 逆向与Bof基础

    20145304 网络对抗技术 逆向与Bof基础 实践目标 学习以下两种方法,运行正常情况下不会被运行的代码: 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的 ...

  2. 20145317 网络对抗技术 逆向与Bof基础

    20145317 网络对抗技术 逆向与Bof基础 实践要求 1. 掌握NOP,JNE,JE,JMP,CMP汇编指令的机器码 2. 掌握反汇编与十六进制编程器 3. 能正确修改机器指令改变程序执行流程 ...

  3. 20145312《网络对抗》 逆向及Bof基础实践

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

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

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

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

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

  6. 20145216《网络对抗》逆向及BOF基础实践

    20145216<网络对抗>逆向及BOF基础实践 1 逆向及Bof基础实践说明 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函 ...

  7. 20145327 《网络对抗》逆向及BOF基础实践

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

  8. 20145204《网络对抗》逆向及bof基础实践

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

  9. 20145208蔡野 《网络对抗》逆向及BOF基础实践

    20145208蔡野 <网络对抗>逆向及BOF基础实践 逆向及Bof基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函 ...

  10. 《网络对抗》——逆向及Bof基础实践

    <网络对抗>--逆向及Bof基础实践 原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 手工修改可执行文件,改变程序执行流程,直接跳转到g ...

随机推荐

  1. NSNotification的几点说明

    1.NSNotification消息的同步性 ①NSNotification使用的是同步操作.即如果你在程序中的A位置post了一个NSNotification,在B位置注册了一个observer,通 ...

  2. 关于清理 mac 其他文件的的方法

    mac 用于开发使用时间长硬盘会越来越小,速度越来越慢的, 亦是花了几分钟研究怎么清理系统的缓存, 方法: 1,到 https://www.omnigroup.com/more/ 安装 OmniDis ...

  3. android tooggle button

    1 http://stackoverflow.com/questions/9938315/toggle-button-in-iphone-style 2 http://blog.csdn.net/bi ...

  4. linux无线网络配置_转

    转自:http://www.cnblogs.com/dartagnan/archive/2010/12/05/2003521.html   一位资生linux 原文:http://www.hpl.hp ...

  5. BZOJ 2176 Strange string 最小表示法

    题目大意:给定一个串S,求最小表示法 n<=1000W,实在不敢写后缀自己主动机,就去学了最小表示法= = 记得用unsigned char不然WA= = 数据真是逗- - #include & ...

  6. springmvc上传方法

    /** * * @param file 上传的文件 * @param filePath 上传到那个目录 * @return 上传后的文件名字 * @throws IOException */ publ ...

  7. 【SQLServer2008】之Telnet以及1433端口设置

    Telnet步骤: 一.首先进入Win7控制面板,可以从开始里找到或者在桌面上找到计算机,点击进入里面也可以找到控制面板,如下图: 二.进入控制面板后,我们再找到“程序和功能”并点击进入,如下图所示: ...

  8. [转]基于Python的接口测试框架

    http://blog.csdn.net/wyb199026/article/details/51485322 背景 最近公司在做消息推送,那么自然就会产生很多接口,测试的过程中需要调用接口,我就突然 ...

  9. 关于reset.css的那些事

    分析过程:body: 发现在没有填写任何内容的情况下是没有margin 的  只有在加入了文字或者div中以后才有了margin(废话)那么 我想问一下 body的padding 默认的有吗??在哪里 ...

  10. iOS Sprite Kit教程之编敲代码以及Xcode的介绍

    iOS Sprite Kit教程之编敲代码以及Xcode的介绍 Xcode界面介绍 一个Xcode项目由非常多的文件组成,比如代码文件.资源文件等.Xcode会帮助开发人员对这些文件进行管理.所以,X ...