execve缓冲区溢出成功完成后的CPU执行流程? ..int 0x80成功完成之后?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了execve缓冲区溢出成功完成后的CPU执行流程? ..int 0x80成功完成之后?相关的知识,希望对你有一定的参考价值。
我正在学习Linux下的缓冲区溢出shellcode方法。 https://seedsecuritylabs.org/Labs_16.04/Software/Buffer_Overflow/
我使用的shellcode以movb $ 0x0b,%a1和int $ 0x80结尾。 Shellcode执行后,我得到命令提示符。我读过许多execve和int 0x80“不返回”的地方。好..好的,但是当execve进程成功并退出时(〜我在命令行提示符下输入“ exit”),程序执行流向何处去?
我以为调用程序的堆栈框架已替换为新的execve代码的信息。新的execve代码是否保留被覆盖进程的返回地址,并像原来一样返回该地址? (因此,它是否确实返回了..到借入的地址?)就int $ 0x80而言,在int 0x80指令之后的下一个字节继续执行吗?如果没有,那么下一个字节是什么?
在缓冲区溢出问题和int 0x80的情况下,例如说一个517字节的hack覆盖了一个24字节的缓冲区。字节将替换缓冲区之外的堆栈存储器地址处的值,包括指向其自身在堆栈中较高位置的可执行代码的返回地址。但是,有意代码在内存中占用了其他数百个其他堆栈字节,从而破坏了不相关的外部作用域进程的堆栈帧。有了这些被破坏的堆栈框架,当... ...>
1),当shell从int 0x80返回并执行了更多的堆栈数据,这些数据不是hack的一部分。现在有什么未指定的字节,可能是无效的CPU操作码。
2)外部堆栈框架的上下文已被破坏,因此在我的shell命令提示符下输入“ exit”后,系统如何继续正常运行?
任何帮助表示赞赏!
我正在学习Linux下的缓冲区溢出shellcode方法。 https://seedsecuritylabs.org/Labs_16.04/Software/Buffer_Overflow/我使用的shellcode以movb $ 0x0b,%a1和int $ ...]结尾,然后以int $ ...
如果我们讨论execve
是什么以及它如何工作,我想您会明白发生了什么。
以上是关于execve缓冲区溢出成功完成后的CPU执行流程? ..int 0x80成功完成之后?的主要内容,如果未能解决你的问题,请参考以下文章