PWN基础复习:漏洞函数与攻防技巧

需积分: 0 0 下载量 93 浏览量 更新于2024-08-04 收藏 593KB DOCX 举报
"pwn基础复习巩固19_7_181" 在网络安全领域,特别是针对软件漏洞利用的"Pwn"挑战中,了解常见的漏洞函数和利用技巧是至关重要的。以下是对标题和描述中提到的知识点的详细说明: 1. **基本会出现漏洞的函数** - **read()**:这是一个系统调用,用于从指定文件描述符`fd`处读取数据到缓冲区`buf`,`count`参数指定要读取的字节数。如果读取的数据量超过缓冲区大小,可能会导致缓冲区溢出,这是许多安全漏洞的基础。 - **write()**:与read()相对,write()用于将`buf`中的数据写入文件描述符`fd`,`count`表示要写入的字节数。在某些情况下,恶意攻击者可能会通过控制写入的数据来操纵程序执行流程,触发任意代码执行。 2. **常用的命令和技巧** - **编译选项**:`-fno-stack-protector`禁用编译器的栈保护功能,`-z execstack`允许栈执行,这在编写漏洞利用程序时是必要的,因为它可以绕过栈不可执行的保护机制。 - **ASLR禁用**:地址空间布局随机化(ASLR)是一种安全措施,使得程序的内存布局在每次运行时都不同,从而增加攻击难度。通过修改`/proc/sys/kernel/randomize_va_space`为0,可以临时禁用ASLR,但这仅在当前会话有效,重启后会恢复。 - **gdb插件和工具**:`cyclic`是一个GDB插件,用于生成特定长度的测试数据,帮助识别溢出的精确长度。`pattern.py`是Python脚本,用于创建和查找特定长度的测试数据,以确定溢出后的偏移量。 3. **shellcode和执行命令** - **shellcode**:一段机器码指令,用于在成功溢出后执行特定操作,如启动一个shell。在示例中,它被用来执行`execve("/bin/sh")`,打开一个新的shell进程。 - **核心转储(Core Dump)**:当程序崩溃时,core dump文件记录了程序的状态,包括内存布局。开启core dump(`ulimit -c unlimited`)可以帮助分析在非调试环境中shellcode的实际位置,因为调试环境(如GDB)可能影响了变量在内存中的布局。 在实际的安全研究和漏洞利用过程中,理解这些基本概念和技巧是必要的,它们能帮助开发者找到并利用漏洞,同时也为安全防护提供了参考。学习如何识别和利用这些漏洞是提升安全技能的关键步骤。