
环境变量与 Set-UID 程序实验
本实验的学习目的是让学生理解环境变量如何对程序和系统产生影响。环境变量是一组动态的命名值,可以影响计算机上进程的行为。自 1979 年被引入 Unix 系统以来,环境变量被大多数操作系统使用。尽管环境变量会影响程序行为,但许多程序员对其工作原理并不熟悉。因此,如果一个程序使用了环境变量,但程序员对此并不了解,那么该程序可能存在漏洞。
查看课程资料 →
缓冲区溢出攻击实验(Set-UID 版本)
本实验的学习目标是让学生通过亲手实践,理解缓冲区溢出漏洞的原理与利用过程。缓冲区溢出是指程序向预先分配的固定长度缓冲区边界之外写入数据的情况。攻击者可以利用该漏洞改变程序控制流,甚至执行任意代码。该漏洞的根本原因在于数据存储区域(如缓冲区)和控制信息存储区域(如返回地址)在内存中相邻或混合使用,数据区域的溢出可能覆盖返回地址,从而改变程序执行路径。
查看课程资料 →
缓冲区溢出攻击实验
缓冲区溢出是程序试图在缓冲区边界之外写入数据导致的。 这种漏洞可以被恶意用户利用来改变程序的行为,执行恶意代码。 本实验的目标是让学生对这类漏洞获得更深的理解,并学习如何在攻击中利用这些漏洞。
查看课程资料 →
缓冲区溢出攻击实验(ARM64)
缓冲区溢出是程序试图在缓冲区边界之外写入数据导致的。 这种漏洞可以被恶意用户利用来改变程序的行为,执行恶意代码。 本实验的目标是让学生对这类漏洞获得更深的理解,并学习如何在攻击中利用这些漏洞。
查看课程资料 →
Return-to-libc 攻击实验
本实验的学习目标是让学生亲身体验缓冲区溢出攻击的一个有趣的变种, 这种攻击可以绕过目前Linux操作系统中实现的保护方案。 利用缓冲区溢出漏洞的常见方法是将恶意的shellcode注入到被攻击者的栈上, 然后让被攻击的程序跳转到 shellcode。为了防止这类攻击, 一些操作系统允许程序将其堆栈设置成不可执行,这样的话,跳转到shellcode会导致程序失败。
查看课程资料 →
Shellcode 开发实验
Shellcode 在涉及代码注入的许多攻击中被广泛使用。编写 Shellcode 是一项具有挑战性的任务。虽然我们可以从互联网上找到现成的 Shellcode,但在有些情况下我们还是需要编写满足特定要求的 Shellcode。此外,从头开始编写自己的 Shellcode 能学到一些有趣的技术。本实验旨在帮助学生理解这些技术,从而能够编写自己的 Shellcode。
查看课程资料 →
格式化字符串攻击实验
C 语言中的 printf() 函数被用来根据格式打印字符串。它的 第一个参数被称为格式化字符串,它定义了字符串应该如何被格式化。 格式化字符串使用占位符,这些占位符由 % 字符标记,供 printf() 函数在打印时填充数据。格式化字符串的使用 不仅限于 printf() 函数,许多其他函数也使用格式化字符串。一些 程序允许用户提供格式化字符串的全部或部分内容。如果这些 内容未经过滤,恶意用户可以利用这个机会使程序运行 任意代码。这样的问题被称为格式化字符串漏洞。
查看课程资料 →
竞态条件漏洞实验
本实验的教学目标是让学生通过动手操作,加深他们在课堂上学到的竞态条件漏洞知识。竞态条件是指当多个进程同时访问和修改同一数据时,不同的顺序会导致执行的结果不同。如果一个拥有特权的程序存在竞态条件漏洞,攻击者可以运行一个并行过程来与该特权程序进行竞争,有可能能改变程序的结果。 本实验提供了一个具有竞态条件漏洞的程序,学生的任务是想办法利用这个漏洞获得 root 权限。除了攻击之外,实验还将引导学生研究一些可用于对抗竞态条件攻击的安全机制,学生需要评估这些机制是否有效并解释为什么有效。
查看课程资料 →
Dirty COW(脏牛)攻击实验
Dirty COW(脏牛)漏洞是竞态条件漏洞的一个典型案例。该漏洞自 2007 年 9 月起存在于 Linux 内核中,并在 2016 年 10 月被发现和利用。它影响所有基于 Linux 的操作系统,包括 Android,后果非常严重:攻击者可以利用该漏洞获得 root 权限。
查看课程资料 →
Shellshock 攻击实验
2014 年 9 月 24 日,bash 中的一个严重漏洞被发现了。这个漏洞被称为 Shellshock,很多系统受 到影响。在本实验中,学生需要进行这个攻击,以便深入了解 Shellshock 漏洞。这个实验的学习目标 是让学生通过亲身体验这个有趣的攻击,理解它是如何工作的,并思考从中可以得到的教训。这个实验 的第一个版本是在 2014 年 9 月 29 日开发的,距漏洞报告发布仅五天。SEED 项目的一个重要任务是 快速将实际攻击转化为教育材料,以便教师能及时将它们引入课堂,并让学生关注现实世界中的事件。
查看课程资料 →