文中writeup收集自互联网,但本文主题是介绍ret2libc借例子一用,姑且算原创吧。
数据执行保护:
DEP就是将非代码段的地址空间设置成不可执行属性,一旦系统从这些地址空间进行取指令时,CPU就是报内存违例异常,进而杀死进程。栈空间也被操作系统设置了不可执行属性,因此注入的Shellcode就无法执行了
导向系统库函数执行(ret2libc)攻击方法:
系统函数库(Linux称为glibc)有个system函数,它就是通过/bin/sh命令去执行一个用户执行命令或者脚本,我们完全可以利用system来实现Shellcode的功能。EIP一旦改写成system函数地址后,那执行system函数时,它需要获取参数。而一般32位函数调用是通过压栈来传参的。
攻击的注入结构是:"A"*n + system_add