栈溢出攻击之Ret2dl
最近几次比赛碰到好几个利用ret2dl进行攻击的题目,这里总结一下具体思路
识别是否使用ret2dl
有些栈溢出的题目,明显可以看到使用了gets、memcpy之类的导致栈溢出的函数
但是题目中没有puts, printf, write等用来输出数据的函数
无法泄露我们常规栈溢出攻击中所需要的一些地址(libc, 栈基址)
这时候使用ret2dl是一种有效的方法
例题
先通过32位的一个栈溢出来理解原理, 然后完成一个64位程序的攻击, 然后还有两个例题加深一波理解
文件下载:baby_pwn
我们用010 Editor
打开题目文件,然后在Templates里运行一下ELF模板, 按alt+F4
打开Template窗口
可以看到一个标准的ELF文件由以下部分组成
- ELF头部
- 程序头表
- 节区头部表
- 符号表
- 静态符号表