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

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

时间:2024-10-08 18:10:41浏览次数:1  
标签:20222325 getShell pwn1 2024 2025 实验 反汇编 shellcode 输入

1.实验内容

  • 缓冲区溢出基本知识:堆栈、函数调用。
  • shellcode技术以及其在各平台的运用与防御。
  • BOF攻击防御技术。

2.实验目标

本次实践的对象是一个名为pwn1的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode。
三个实践内容如下:
手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
注入一个自己制作的shellcode并运行这段shellcode。

3.实验过程

任务一:手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。

  1. 下载目标文件pwn1并进行反汇编。
  2. 观察核心的getShell、foo、main代码。

    main函数调用foo,对应机器指令为“ e8 d7ffffff”,我们想让它调用getShell,只要修改“d7ffffff“为"getShell-80484ba"对应的补码”c3ffffff“就行。
  3. 修改可执行文件,将其中的call指令的目标地址由d7ffffff变为c3ffffff,输入
    cp pwn1 pwn2
    vi pwn2
    在vi内按ESC键,输入:%!xxd将显示模式切换为16进制模式,输入\e8 d7查找其所在位置,找到后按i进入输入模式修改d7为c3,输入:%!xxd -r切换16进制模式为原模式,输入:wq退出vi。
  4. 再次进行反汇编查看call指令是否正确调用getShell。

    可以看到修改成功,成功调用了getShell函数。

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

  1. 使用gdb调试pwn1文件,输入字符串,观察返回地址的覆盖情况

    如果输入字符串1111111122222222333333334444444412345678,那 1234 那四个数最终会覆盖到堆栈上的返回地址,进而CPU会尝试运行这个位置的代码。那只要把这四个字符替换为 getShell 的内存地址,输给pwn1,pwn1就会运行getShell。
  2. 通过反汇编时可以看到getShell的内存地址,即0804847d。接下来要确认下字节序,简单说是输入11111111222222223333333344444444\x08\x04\x84\x7d,还是输入11111111222222223333333344444444\x7d\x84\x04\x08。
  3. 对比之前eip 0x34333231 0x34333231,正确应用输入11111111222222223333333344444444\x7d\x84\x04\x08。
  4. 生成一个包含\x7d\x84\x04\x08这样的16进制值的字符串的文件。
  5. 使用16进制查看指令xxd查看input文件的内容是否如预期。
  6. 将input的输入,通过管道符“|”,作为pwn1的输入。

    成功触发getShell函数。

任务三:注入一个自己制作的shellcode并运行这段shellcode。

  1. 选择一段shellcode:
    \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\
  2. 将pwn1设置为堆栈可执行,并关闭地址随机化。
  3. 构造攻击buf。
  4. 打开一个终端注入攻击。
  5. 打开另一个终端,找到pwn1进程号,再用gdb调试该进程。

  6. 设置断点查看注入buf的内存地址。

  7. 在另一个终端按下回车。
  8. 修改返回地址为0xffffd380。

    成功运行shellcode。

4.问题及解决方案

  • 问题1:在安装Kali时显示网络配置失败,不能正常安装Kali。
  • 问题1解决方案:改变网络配置方式为手动,打开自己电脑的网络连接面板选择一个可用的网络手动连接。
  • 问题2:下载目标文件pwn1反汇编时提示没有pwn1文件,但实验最初以及下载pwn1。
  • 问题2解决方案:错误将pwn1下载到了自己的电脑,在虚拟机自带的火狐浏览器中下载pwn1到虚拟机,再进行反汇编。

  • 问题3:在使用gdb调试pwn1文件时找不到gdb命令,无法进行调试。
  • 问题3解决方案:通过安装包安装gdb,再进行调试,成功调试。
  • 问题4:在查看pwn1进程号时未能显示。
  • 问题4解决方案:输入./pwn1执行文件,再次查看进程号。
  • 问题5:在设置堆栈可执行时找不到execstack命令。
  • 问题5解决方案:下载execstack。

5.学习感悟、思考等

通过本次实验我深刻理解了缓冲区溢出的原理以及其出现的场景,对shellcode技术以及其在Linux平台的运用也更加熟悉了,在实验中我学会了进行反汇编和进入十六进制编程器,掌握了修改机器指令改变程序执行流程的能力,同时我也能正确构造payload进行bof攻击 。实验中使用的操作让我对课程的理论学习理解地更加透彻与直观,通过本次实验我对在Linux命令行调试文件有了初步掌握。不仅如此,面对实验过程中出现的卡顿点,我能利用网络上的参考资料逐一解决,这次实验也提升了我在大量资料面前查找自己所需资料的能力,对我的学习和工作都有很大帮助。

参考资料

标签:20222325,getShell,pwn1,2024,2025,实验,反汇编,shellcode,输入
From: https://www.cnblogs.com/shutong233/p/18452240

相关文章

  • 202410-Notes for reading
    TDB1.Gravityexperimentswithradiopulsarshttps://ui.adsabs.harvard.edu/abs/2024LRR....27....5F/abstract2.PhD,Porayko,NataliyaKonstantinovna_2019_ProbingtheInterstellarMediumandDarkMatterwithPulsars5.PhD,2020,NataliyaK.PoraykoProbin......
  • 20222310 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    一、实验内容1.实验目标本次实验的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实验的目标就是想......
  • 「完美收官」科东软件2024上海国际工博会精彩回顾:鸿道操作系统赋能新型工业化
    第24届中国国际工业博览会已经落下帷幕。历经24届,工博会已成为全球工业发展的“风向标”。今年的中国工博会以“工业聚能新质领航”为主题,工业自动化、数控机床与金属加工、新能源与智能网联汽车、机器人等领域重磅展品悉数亮相,展示了中国新型工业化高质量发展的核心技术,为......
  • 2024年10月8日大盘行情
    2024年5月中旬开始,大盘一直下跌,每天的交易额缩减到5000亿左右,人气低迷。2024年9月20日左右,出台了一系列提振经济和股市的政策,十一假期前的一周,大盘快速拉升,一周时间走完了半年的行情。很多人担心节后第一天会下杀,节前清空了仓位。节后第一天几乎涨停开盘,然后盘中下杀,最终收盘有所......
  • Adobe InDesign(ID2024)页面设计和出版软件下载(附安装包)
    目录AdobeInDesign软件简介功能特点下载AdobeInDesign软件简介AdobeInDesign是一款由Adobe公司开发的专业页面设计和出版软件,广泛应用于印刷品和数字出版物的制作。它能够处理复杂的页面布局、排版和图像管理任务,是设计师、出版商和广告制作人员的首选工具。 功能......
  • 2024第四届FIC初赛Writeu
    检材链接:https://pan.baidu.com/s/1fwHb_5svMyK3Gr4-QeNc0Q?pwd=43a3挂载密码:2024Fic@杭州Powered~by~HL!手机部分1.嫌疑人李某的手机型号是?A.XiaomiMI2sB.XiaomiMI4C.XiaomiMI6D.XiaomiMI8在火眼中分析到蓝牙名称是XiaomiMI3Wimage-20240428163939574但是选项中没......
  • 牛客网1000 大厂Java 面试题大全(2024 最新版)
    很多Java工程师的技术不错,但是一面试就头疼,10次面试9次都是被刷,过的那次还是去了家不知名的小公司。问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。应届生:你该如何准备简历,面试项目和面试说辞?Spring底层逻辑是什么?1-3年经验的程序员:面试中你该讲哪些值钱......
  • C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿,推荐或自荐优质文章/项目/学习资源等。......
  • 书籍-《Docker深度探索(2024版)》
    书籍:DockerDeepDive:ZerotoDockerinASingleBook,2024Edition作者:NigelPoulton出版:NielsonBookServices编辑:陈萍萍的公主@一点人工一点智能书籍介绍本书涵盖了Docker生态系统中所有最新的趋势和技术,包括DockerScout、DockerInit、DockerDebug以及Wasm容器。本书深入浅......
  • NewStarCtf 2024第一周writeup
    有几道题没写出来,但还是希望能够帮到大家理解更多的CTF知识Signin操作内容:做选择题得出flag。flag值:flag{I_Agr3e_to_FoL10w_th3_ru1es_c41fa97d}MISC兑换码操作内容:题目提示flag在图片下方,010修改图片宽度,得到flag。flag值:flag{La_vaguelette}MISCLabyrinth操......