2024-09-29 01:34:21 发布
网友
下面是c语言的一个例子:
#include <stdio.h> #include <string.h> void bad() { printf("Oh shit really bad~!\r\n"); } void foo() { char overme[4] = "WOW"; *(int*)(overme+8) = (int)bad; } int main() { foo(); }
事实上,Python和PHP的解释与其他人的建议不符。关键是,它们公开的几乎所有api和语言语义都经过了严重的错误检查,因此不可能有可利用的未定义行为。即使你编译了这些语言,它仍然是不可能的。这并不意味着您不能公开可以执行任何操作的不安全api。事实上,使用Pythons ctypes模块,应该可以创建类似的行为,但很难意外创建。
很抱歉:您在Python中遇到了一个弱点。不幸的是,这是设计的,所以没什么办法。也许你应该和C呆在一起
正如马丁·洛维斯所说:
Python does not support buffer overflows, sorry.
哇哦。好像几个月前我读过那篇文章,但已经7年零1天了。
由于PHP是一种脚本语言,并且没有指针,而且字符串类型是二进制安全的,所以在PHP中这些东西不起作用。
但你为什么要这么做?
(哦,PHP中可能存在导致缓冲区溢出的错误,但这不是任何方式都可以依赖的,而且通常是完全固定的……)
事实上,Python和PHP的解释与其他人的建议不符。关键是,它们公开的几乎所有api和语言语义都经过了严重的错误检查,因此不可能有可利用的未定义行为。即使你编译了这些语言,它仍然是不可能的。这并不意味着您不能公开可以执行任何操作的不安全api。事实上,使用Pythons ctypes模块,应该可以创建类似的行为,但很难意外创建。
很抱歉:您在Python中遇到了一个弱点。不幸的是,这是设计的,所以没什么办法。也许你应该和C呆在一起
正如马丁·洛维斯所说:
哇哦。好像几个月前我读过那篇文章,但已经7年零1天了。
由于PHP是一种脚本语言,并且没有指针,而且字符串类型是二进制安全的,所以在PHP中这些东西不起作用。
但你为什么要这么做?
(哦,PHP中可能存在导致缓冲区溢出的错误,但这不是任何方式都可以依赖的,而且通常是完全固定的……)
相关问题 更多 >
编程相关推荐