Writeup-Pwnable: unexploitable

ROP

这题主要就是在 0x400560 藏了一个0F 0A的 opcode, 对应的 x64 指令是syscall, 找到这个就好办了。

然后构造 ROP, 一开始找不到控制 rax 的 gadgets, 搜了一下发现可以利用read()的返回值。具体的构造就是时间问题了,x64 的 ROP 可以看这篇文章1

exp-rop.py

Gist: cubarco/23b04edc7e79b1c71547

SROP

结果 flag 里提到 SROP 的解法,我就又写了个 SROP. 简单的 SROP 介绍可以看这篇文章2

exp-srop.py

Gist: cubarco/23b04edc7e79b1c71547


  1. 一步一步学ROP之linux_x64篇 ↩︎

  2. Sigreturn Oriented Programming (SROP) Attack攻击原理 ↩︎