如何避免使用memcpy函数导致缓冲区溢出漏洞?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1908个文字,预计阅读时间需要8分钟。
本次实验所需环境和工具包括:需要说明的环境和工具,具体内容可留言评论。我简要介绍了,估计也没人看。主要是太多了,我不想打字。
学习这个漏洞,我们需要去学习漏洞的理论知识。在汇编编程中...
本次实验需要用到的环境和工具要是需要的可以留言评论,我就不一一介绍了,估计也没啥人看。主要是太多了,我不想打字。
学习这个漏洞我们要去学习漏洞的理论知识。
在汇编程序的执行过程中,如果需要调用某个函数一般是call函数地址,而call这条指令在执行的时候会把函数返回地址(执行完函数后要执行的下一条指令的地址)压栈,然后在栈中的伸展方向是从高地址向低地址延申的。这里可能不是很好理解,我画个图hhhh,比如我在执行call指令时压栈的返回地址的在栈中的序号是10000,然后我调用函数的变量也需要压榨,我申请的一个空间为10的数组,所以我就会申请9990到10000这10个格子用来放参数,然后在存参数的过程中其实栈指针是从低地址移向高地址,第一个参数存9990,第二个存9991,,,但是如果我们的申请的空间是10但是实际上有20个参数的话,参数还是会继续往栈中存,就会覆盖原本存函数返回地址的数据。
当执行完memcpy函数以后,就是那个栈平衡,就会把栈中的调用函数入栈的数都出栈,直到把存返回地址的位置出栈到EBP,EBP的地址是当前指令的地址,EIP的地址是下一条指令的地址。
本文共计1908个文字,预计阅读时间需要8分钟。
本次实验所需环境和工具包括:需要说明的环境和工具,具体内容可留言评论。我简要介绍了,估计也没人看。主要是太多了,我不想打字。
学习这个漏洞,我们需要去学习漏洞的理论知识。在汇编编程中...
本次实验需要用到的环境和工具要是需要的可以留言评论,我就不一一介绍了,估计也没啥人看。主要是太多了,我不想打字。
学习这个漏洞我们要去学习漏洞的理论知识。
在汇编程序的执行过程中,如果需要调用某个函数一般是call函数地址,而call这条指令在执行的时候会把函数返回地址(执行完函数后要执行的下一条指令的地址)压栈,然后在栈中的伸展方向是从高地址向低地址延申的。这里可能不是很好理解,我画个图hhhh,比如我在执行call指令时压栈的返回地址的在栈中的序号是10000,然后我调用函数的变量也需要压榨,我申请的一个空间为10的数组,所以我就会申请9990到10000这10个格子用来放参数,然后在存参数的过程中其实栈指针是从低地址移向高地址,第一个参数存9990,第二个存9991,,,但是如果我们的申请的空间是10但是实际上有20个参数的话,参数还是会继续往栈中存,就会覆盖原本存函数返回地址的数据。
当执行完memcpy函数以后,就是那个栈平衡,就会把栈中的调用函数入栈的数都出栈,直到把存返回地址的位置出栈到EBP,EBP的地址是当前指令的地址,EIP的地址是下一条指令的地址。

