Agent Skills
返回列表
🔒

栈溢出与ROP攻击手册

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/stack-overflow-and-rop-lr-o3he。

技能介绍

需要解决的栈利用难题

现代二进制保护机制(NX、ASLR、PIE、canary、RELRO)使得传统栈溢出攻击难以直接生效。当漏洞点位于栈上函数时,比如gets、scanf等危险函数导致返回地址被覆盖,攻击者需要绕过这些保护才能实现代码执行。典型挑战包括如何绕过canary值检测、如何从被泄露的libc地址构建return-to-libc链、如何在PIE二进制中定位关键函数偏移等。

技能核心能力与工作路径

该技能基于ctf-wiki advanced-rop、真实CVE漏洞分析及CTF竞赛模式提炼,覆盖以下核心能力:

  • 经典栈溢出利用:通过ret2text直接跳转到栈上的shellcode或现有代码
  • 返回导向编程(ROP)链构造:使用ROPgadget等工具提取gadget,构建pop rdi; ret等常用链
  • 绕过保护的高级技巧:

- return-to-libc:绕过NX,调用system("/bin/sh")
- ret2csu:应对启用RELRO的二进制,利用CSU gadgets控制寄存器
- SROP:利用信号处理帧设置完整寄存器上下文
- 栈pivoting(fs-pivot):当栈地址未知时,通过fs:[0x28]劫持控制流

  • canary绕过:结合格式化字符串漏洞泄露canary值,再覆盖返回地址
  • 盲注环境适配:针对无源码二进制,使用BROP(Blind ROP)技术逐步探测gadget

技能通过以下步骤工作:

  1. 识别漏洞点(如vuln函数)并验证栈溢出可行性
  2. 根据二进制保护级别选择对应利用技术
  3. 构造ROP链或return-to-libc调用
  4. 调试验证链的执行效果,调整gadget顺序

适用边界与注意事项

该技能适用于:

  • CTF竞赛:特别是涉及栈利用的题目
  • 合法渗透测试:对授权系统进行安全评估
  • 漏洞研究:分析真实CVE中的栈利用技巧

需要避免的场景:

  • 非栈内存漏洞(如堆溢出、UAF)应使用heap-exploitation技能
  • 需要直接写入内存的场景应使用arbitrary-write-to-rce技能
  • 无栈溢出但存在格式化字符串漏洞时,优先结合format-string-exploitation泄露信息

注意事项:

  • 技术使用需严格限定在合法授权范围内
  • 不同编译器/保护级别可能需要调整gadget选择
  • ret2dlresolve适用于部分RELRO场景,但需处理.rela.plt段
  • 实际利用中需结合二进制具体情况调整技术组合

使用场景

  • CTF比赛中遇到启用canary保护的栈溢出题目,需要结合格式化字符串泄露canary值后构造ROP链获取shell
  • 分析真实CVE漏洞时二进制启用了NX保护,需要提取libc中的system函数地址并构建return-to-libc链
  • 渗透测试授权系统时遇到启用RELRO的二进制,需要使用ret2csu技术控制寄存器并调用system函数
  • 在无源码的远程服务中遇到栈溢出,需要使用BROP技术逐步探测可用的gadget并构造利用链

适合人员

  • CTF参赛选手:在比赛中需要快速识别保护机制并选择对应的栈利用技术
  • 安全研究员:分析真实CVE漏洞时需要复现栈溢出利用链以验证漏洞危害
  • 渗透测试工程师:对授权系统进行安全评估时需要绕过现代二进制保护机制
  • 二进制安全学生:学习ROP技术原理时需要通过实战理解gadget选择与链构造