PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门


Posted in PHP onSeptember 13, 2020

代码如下:

$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};eval($O00O0O("JE8wTzAwMD0iU1p6QXBDSHR4UlVHd2dRdk5CVHlvUHFKaklPbWVpcmZGY2RsS3VuYmhXWVZYYUVrTE1Ec2dHRE1XZXNkbmJ2eW1FUkNJT0ZOVFpydHV6S0JQZmtvSHBRWGx3U2NKWXhqaUxVVmhBcWFacTltTHNNbEdZSVRjTk1WaTFJSHZYR0h2WGFTdlZqSUYxYkhpMEhVYkh6U2lnTXd6WG5OaXk0ZkttV1h4MkpDemVib3YwamdqVmpnWU5RRmJqdFlianRvRlZISWJnUVFLbVQvWkU9PSI7ZXZhbCgnPz4nLiRPMDBPME8oJE8wT08wMCgkT08wTzAwKCRPME8wMDAsJE9PMDAwMCoyKSwkT08wTzAwKCRPME8wMDAsJE9PMDAwMCwkT08wMDAwKSwkT08wTzAwKCRPME8wMDAsMCwkT08wMDAwKSkpKTs="));

借用 javascript eval 解密思路 将 eval 替换成 echo, 将 echo 得到的内容覆盖掉 eval 的内容

$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};$O0O000="SZzApCHtxRUGwgQvNBTyoPqJjIOmeirfFcdlKunbhWYVXaEkLMDsgGDMWesdnbvymERCIOFNTZrtuzKBPfkoHpQXlwScJYxjiLUVhAqaZq9mLsMlGYITcNMVi1IHvXGHvXaSvVjIF1bHi0HUbHzSigMwzXnNiy4fKmWXx2JCzebov0jgjVjgYNQFbjtYbjtoFVHIbgQQKmT/ZE==";eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000))));

继续替换 eval 内容,得带如下代码,然后在浏览器中查看源码即可

<?php
$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};
?><?php
echo $_SERVER['REMOTE_ADDR'] ."\r\n";
echo $_SERVER['SERVER_NAME'];
?>

代码已经被解出来了

这份商业源码还留有两个后门, 都存在于加密文件中
一个的思路是每天首次访问网站时, 向授权服务器发请求, 检查网站是否在授权列表, 如果不存在则删除某个加密文件 (后台登陆文件)

另一个思路是后台登陆文件继承自 Think 基类, 没有登陆权限的校验, 有一个方法, 可以列出所有管理用户, 可以更改任意用户的密码.

没有用扩展的加密都是伪加密!!

三水点靠木小编补充:最后通过源码方式查看就可以获取代码了

$O00OO0=urldecode 解密

微盾类似解密,一般都以

<?php $O00OO0=urldecode("%6E1%7A%62%2……; ?>

形式出现,记录下步骤:

示例:

$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};eval($O00O0O("JE8wTzAwMD0iV0FLQ1JIbHdPdnh0cmRHVUxFbmFOSlBlamZGUXpaTUJjc29nSXVrYnBxWFR5bVZoU2lEWVpKUXlvaURPZEZXblBZdFV2U2xmVEJleEt6a0dxVmhFSHdnTVhDdUFyUmFqTE5tcGJjSXNlSTlPZmlKVHlNdVR5TkROUXlvem8wbVVaTEJyVnlCWWVqMGN4Wm1xWGNEN0JpTTlYTmtxSExYQ1hObUxZeVg3WHlvNFF5b3pVUzlqbWt3Y3h0azRYRDByZDJtNGZhR2dRam45SUdnVHlLOCtYSjBRIjtldmFsKCc/PicuJE8wME8wTygkTzBPTzAwKCRPTzBPMDAoJE8wTzAwMCwkT08wMDAwKjIpLCRPTzBPMDAoJE8wTzAwMCwkT08wMDAwLCRPTzAwMDApLCRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw=="));

<?php
$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");//n1zb/ma5vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j
echo '第一步生成:',$O00OO0;
echo '<br /><br />********************************************************<br /><br />';
 
$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};
$O0OO00= $O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};
$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0 {3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};
$OO0000=$O00OO0{7}.$O00OO0{13};
$O00O0O.=$O00OO0{22}.$O00OO0 {36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};
echo '第二步生成:',$O00O0O;
echo '<br /><br />********************************************************<br /><br />';
 
//上面解出来 $O00O0O=base64_decode;
//即然 $O00O0O=base64_decode那么把下面的代码改一下,eval是用来执行php代码,这里不需要执行,只需要解出php代码即可,那么去掉eavl 并把$O00O0O换成上面解出来的值
//eval ($O00O0O ("JE8wTzAwMD0iV0FLQ1JIbHdPdnh0cmRHVUxFbmFOSlBlamZGUXpaTUJjc29nSXVrYnBxWFR5bVZoU2lEWVpKUXlvaURPZEZXbl BZdFV2U2xmVEJleEt6a0dxVmhFSHdnTVhDdUFyUmFqTE5tcGJjSXNlSTlPZmlKVHlNdVR5TkROUXlvem8wbVVaTEJyVnlCWWVqMG N4Wm1xWGNEN0JpTTlYTmtxSExYQ1hObUxZeVg3WHlvNFF5b3pVUzlqbWt3Y3h0azRYRDByZDJtNGZhR2dRam45SUdnVHlLOCtYSj BRIjtldmFsKCc/PicuJE8wME8wTygkTzBPTzAwKCRPTzBPMDAoJE8wTzAwMCwkT08wMDAwKjIpLCRPTzBPMDAoJE8wTzAwMCwkT0 8wMDAwLCRPTzAwMDApLCRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw=="));
//修改后变成
echo '第三步生成:';
echo (base64_decode("JE8wTzAwMD0iV0FLQ1JIbHdPdnh0cmRHVUxFbmFOSlBlamZGUXpaTUJjc29nSXVrYnBxWFR5bVZoU2lEWVpKUXlvaURPZEZXbl BZdFV2U2xmVEJleEt6a0dxVmhFSHdnTVhDdUFyUmFqTE5tcGJjSXNlSTlPZmlKVHlNdVR5TkROUXlvem8wbVVaTEJyVnlCWWVqMG N4Wm1xWGNEN0JpTTlYTmtxSExYQ1hObUxZeVg3WHlvNFF5b3pVUzlqbWt3Y3h0azRYRDByZDJtNGZhR2dRam45SUdnVHlLOCtYSj BRIjtldmFsKCc/PicuJE8wME8wTygkTzBPTzAwKCRPTzBPMDAoJE8wTzAwMCwkT08wMDAwKjIpLCRPTzBPMDAoJE8wTzAwMCwkT0 8wMDAwLCRPTzAwMDApLCRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw=="));
echo '<br /><br />********************************************************<br /><br />';
//上页那步输出来代码为:
/*
$O0O000="WAKCRHlwOvxtrdGULEnaNJPejfFQzZMBcsogIukbpqXTymVhSiDYZJQyoiDOdFWnPYtUvSlfTBexKzkGqVhEHwgMXCuArRajLNmpbcIseI9OfiJTyMuTyNDNQyozo0mUZLBrVyBYej0cxZmqXcD7BiM9XNkqHLXCXNmLYyX7Xyo4QyozUS9jmkwcxtk4XD0rd2m4faGgQjn9IGgTyK8+XJ0Q";
eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000))));
*/
//同样,不需要eval,改成echo
$O0O000="WAKCRHlwOvxtrdGULEnaNJPejfFQzZMBcsogIukbpqXTymVhSiDYZJQyoiDOdFWnPYtUvSlfTBexKzkGqVhEHwgMXCuArRajLNmpbcIseI9OfiJTyMuTyNDNQyozo0mUZLBrVyBYej0cxZmqXcD7BiM9XNkqHLXCXNmLYyX7Xyo4QyozUS9jmkwcxtk4XD0rd2m4faGgQjn9IGgTyK8+XJ0Q";
echo '最终代码是:(这是我用htmlspecialchars函数把标签转换了)'.htmlspecialchars('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000))));
 
?>

上面两种方法小编测试了第一种方法,简单粗暴。

PHP 相关文章推荐
php全局变量和类配合使用深刻理解
Jun 05 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 PHP
php使用文本统计访问量的方法
May 12 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 PHP
PDO::commit讲解
Jan 27 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
PHP重载基础知识回顾
Sep 10 #PHP
PHP反射基础知识回顾
Sep 10 #PHP
PHP获取类私有属性的3种方法
Sep 10 #PHP
php实现图片压缩处理
Sep 09 #PHP
如何在PHP中读写文件
Sep 07 #PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 #PHP
PHP autoload使用方法及步骤详解
Sep 05 #PHP
You might like
国内咖啡文化
2021/03/03 咖啡文化
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
win与linux系统中python requests 安装
2016/12/04 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
Python3列表List入门知识附实例
2020/02/09 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
一套C#面试题
2013/10/09 面试题
旷课检讨书3000字
2014/02/04 职场文书
给校长的建议书300字
2014/05/16 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
个人委托书怎么写
2014/09/17 职场文书
化验员岗位职责
2015/02/14 职场文书
班主任寄语2016
2015/12/04 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
table不让td文字溢出操作方法
2022/12/24 HTML / CSS