《Linux内核原理与分析》第十一周作业

本文详述了一次关于缓冲区溢出漏洞的实验,包括实验原理、环境配置、设置调整以及攻击程序的创建和执行。实验中通过关闭地址空间随机化,利用C程序创建了一个可被攻击的栈溢出漏洞,并通过构造特定输入获取root权限。当开启地址空间随机化后,攻击失败,突显了该安全机制的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验一 缓冲区溢出漏洞实验

实验原理:缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写

实验过程
一、环境配置
1、安装用于编译32位C程序的软件包

sudo apt-get update
sudo apt-get install -y lib32z1 libc6-dev-i386 lib32readline6-dev
sudo apt-get install -y python3.6-gdbm gdb

二、初始设置
1、关闭地址空间随机化,便于猜测内存地址

在这里插入图片描述

2、使用zsh代替/bin/bash,避免shell程序在被调用时自动放弃特权

在这里插入图片描述

3、进入32位linux环境使用bash

在这里插入图片描述 

三、实验步骤
1、在/tmp目录下新建stack.c文件输入代码 

在这里插入图片描述

2、编译程序并设置SET-UID 

在这里插入图片描述

3、找到shellcode在内存中的地址

gdb stack
disass main

 

计算shellcode的地址为 0xffffcfb0 + 0x64 = 0xffffd014
4、在/tmp下新建exploit.c文件并编译

 

在这里插入图片描述 

5、运行攻击程序exploit和漏洞程序stack,输入whoami后可以发现获得了root权限

在这里插入图片描述 6、打开系统地址空间随机化,运行攻击程序和漏洞程序,发现出现段错误

在这里插入图片描述

7、关闭地址空间随机化并将/bin/sh重新指向/bin/bash,运行攻击程序和漏洞程序,发现无法获得root权限

在这里插入图片描述 

在这里插入图片描述 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值