如何在PHP/Python中进行缓冲区溢出?

2024-09-29 01:34:21 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是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();
}

Tags: 语言stringfooinclude例子intohbad
3条回答

事实上,Python和PHP的解释与其他人的建议不符。关键是,它们公开的几乎所有api和语言语义都经过了严重的错误检查,因此不可能有可利用的未定义行为。即使你编译了这些语言,它仍然是不可能的。这并不意味着您不能公开可以执行任何操作的不安全api。事实上,使用Pythons ctypes模块,应该可以创建类似的行为,但很难意外创建。

很抱歉:您在Python中遇到了一个弱点。不幸的是,这是设计的,所以没什么办法。也许你应该和C呆在一起

正如马丁·洛维斯所说:

Python does not support buffer overflows, sorry.

哇哦。好像几个月前我读过那篇文章,但已经7年零1天了。

由于PHP是一种脚本语言,并且没有指针,而且字符串类型是二进制安全的,所以在PHP中这些东西不起作用。

但你为什么要这么做?

(哦,PHP中可能存在导致缓冲区溢出的错误,但这不是任何方式都可以依赖的,而且通常是完全固定的……)

相关问题 更多 >