Skip to content

第二章: 栈溢出

这一章,主要是在返回地址上面插入代码,这个时候的返回地址是静态的

1. 定位 (shellcode) 的位置 → jmp esp

- 怎么做:查找当前某个 dll 的 (jmp esp),返回地址改成跳转到那边的地址
- 为什么:返回地址弹出之后,(esp) 正好指向返回地址下面第一个,所以 (jmp esp) 之后,就开始指向返回地址下面的代码

2. 两种方式---返回地址上面插入,返回地址下面插入

- 如果在返回地址下面插入,好办,那就直接在进行插入 (shellcode) 就行
- 如果在上面,需要在返回地址下面第一个在插入(jmp xxx)指令

3. 注意点

- 抬高栈顶: 防止 shellcode 中的 push 指令破坏 shellcode
- 提高成功率
    - ret 不用非得指向 shellcode,可以更高
    - ret 不用非得就一个,可以在 ret 附近都设置为 ret

Comments