【AIGC】ret2libc 折磨了我三天:32 位压栈就完事,64 位卡在一条 pop rdi 和一次栈对齐
一句话 2023-03-01,我在练习目录里留了一行字: 完成!我觉得我不会再忘记这个怎么写了。 三年半后把东西翻出来归档,这句话半真半假。流程确实忘不掉,但当时卡住我的地方,和我以为的完全不是一回事。 两个样本、两份脚本,现在一起放在 ret2libc。 一、为什么这两个目标都必须借 libc 两道题一个 32 位一个 64 位,共同点很明确:程序里既没有 system,也没有 /bin/sh 这个字符串。 那就没得商量了——想拿 shell,只能借 libc 里现成的那两个东西。这就是 ret2libc 的全部动机:漏洞给你控制流,libc 给你「要执行的代码」。 ...