是一道基础的栈溢出
题目会用int 80给一个输出,然后会允许你进行输入,输入可以直接完成栈溢出
(int 80中eax寄存器内存放的是操作数,4为输出,3为输入
思路是用输出leak出esp的地址,然后执行存放在栈内的shellcode
ROP直接跳转到 0x08048087 ,可以通过输出泄露出esp此时的地址
需要注意的是,这里获得的输出并不是当前的栈顶,相比于正常的函数调用,少了一个 pop esp的过程
所以我们需要对获得的 esp_addr - 0x4 才是真正的栈顶
所以 shellcode_addr = esp_addr - 0x4 + 0x18 = esp_addr + 0x14
exp
1 | from pwn import * |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 0bs3rver的小屋!