欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-18 10:09:06
代码如下:$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...

代码如下:

$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 urldecode