我试图编写一个用于交互火( Linux上有BOF漏洞的游戏)的漏洞来练习CTF。
在对游戏进行模糊处理时,我发现如果将缓冲区大小增加到常量,调试器中的游戏将以类似Windows应用程序行为的方式在SEH上写入。(EIP未被覆盖,寄存器值已损坏并停止执行)
根据CTF的说法,解决这个问题的方法是使用ESP指出的一个小缓冲区跳转到驻留在缓冲区开头的外壳代码。
然而,这就引出了一个问题: Linux是否有类似的方法来处理可被利用的异常?
当我试图用google搜索"SEH with Linux“时,我看到的页面中提到Linux是攻击机器,而不是受害者。
发布于 2016-03-22 08:09:26
不是的。结构化异常处理程序(SEH)是Windows专用的东西,因此Linux不能以同样的方式被利用。
发布于 2018-05-21 17:04:59
Linux中有许多异常处理程序利用的实例:
linux内核中的浮点异常处理程序:
https://www.securityfocus.com/bid/10538/exploit
这是一个异常处理程序,涉及从内核返回用户模式:
https://www.cs.dartmouth.edu/~trdata/reports/TR2011-688.pdf
等
PS:我怀疑您的上下文是基于Linux的。Windows使用的名称为"SEH",但所有这些都是硬件触发的异常,如下所示:
https://wiki.osdev.org/Exceptions
Linux也有自己的处理异常的方式--用户模式和内核模式。由于所有这些都是作为函数指针实现的,所以它总是可以被覆盖和利用。
https://security.stackexchange.com/questions/118198
复制相似问题