今天下午,我一直在通過生成隨機字符串並將它們傳遞給Perl的eval
。這些腳本是隻包含以下字符的字符串:評估隨機文本危險嗎?
+-*$_.,/\@()%=`
是否存在統計上顯着的風險,我會破壞某些內容?
注意:我不通過它的參數,如"rm -rf /"
。
今天下午,我一直在通過生成隨機字符串並將它們傳遞給Perl的eval
。這些腳本是隻包含以下字符的字符串:評估隨機文本危險嗎?
+-*$_.,/\@()%=`
是否存在統計上顯着的風險,我會破壞某些內容?
注意:我不通過它的參數,如"rm -rf /"
。
我的直覺說明確地回答這個問題(即以一個實際的概率)可能會最終放置一個Chaitin's constant這是一個無法估量的界限。所以這很可能不可能(數學上)回答你的問題。
如果你擔心,爲什麼不只是沙盒的Perl過程?
$!
可以解析爲各種字符串,具體取決於平臺和區域設置。所以也許像
eval "$!=$$/$.,`$!`"
有可能會惡作劇。
謝謝,這很有幫助。我沒有在問題中寫出'!',但這只是我希望的反應。 – Tim
沒有'!'在他的樣本字符串中。我同意,暴露於shell是一種風險,特別是因爲它暴露了一種全新的可能性語法(sh,bash,msdos等),以及與進程和文件系統的緊密鏈接。還有另外一個問題。特殊變量如$ _和$ /可能會改變遠程程序的行爲,如果事實證明這個測試是作爲一個更大的腳本的一部分運行的話。另外,如果eval發生在循環中,$ _和$ /爲狀態機提供累加器和寄存器。 //也提供正則表達式。 – DavidO
@DavidO:改變包裝程序的能力絕對值得注意。除了DoS之外,任何方式都是正則表達式的漏洞嗎? – Tim
如果「過於本地化」是關於人物的選擇,我很樂意聽到關於他人的答案。 – Tim
我很感興趣的是對'___ .. @)+ $$'做什麼的解釋。 – Rob
@Rob:看到[隨機輸出](http://dump.gurka.se/perl-output.txt)('say ___ .. @)+ $$'),如果你想要:) – Tim