Ubuntu 22.04下 ROP环境适配指南

基础环境

系统:Ubuntu 22.04

对于CTF-Wiki上部分题目由于原题环境较老在新系统上存在无法复现的问题,首先确保系统支持32位程序并安装必要工具:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install gcc-multilib g++-multilib

对于安全机制差异,如ASLR(地址空间布局随机化),在Ubuntu 22.04中,ASLR默认开启;

sudo sysctl -w kernel.randomize_va_space=5 # 完全关闭

调试时临时关闭ASLR,可以用 set disable-randomization on(针对GDB调试的进程)或 echo 0 | sudo tee /proc/sys/kernel/randomize_va_space(系统全局)。

栈保护与NX: 编译时注意参数;

# 关闭栈保护,启用NX(不可执行栈)
gcc -fno-stack-protector -z execstack -o test test.c

调试技巧:

  • 使用Docker,在做题过程中可以精确控制Libc等依赖版本,保持环境一致性。
  • GDB+gef / pwndbg
  • 检查目标安全保护

References

[1] https://ctf-wiki.org/pwn/linux/user-mode/stackoverflow/x86/medium-rop/)

[2] https://blog.csdn.net/weixin_46237311/article/details/115701579

[3] https://www.cnblogs.com/lhon901/articles/18420733


Ubuntu 22.04下 ROP环境适配指南
https://zer0ptr.github.io/2025/11/07/ubuntu22-rop-env/
作者
zer0ptr
发布于
2025年11月7日
许可协议