织梦DEDECMS管理员密码破解方法总结
要破解dedecms管理员密码我们就必须知道dedecms管理员密码生成规则,下面我来给大家介绍一下管理员密码破解方法.
刚接手客户的一个由织梦dedecms搭建的企业网站,管理员密码找不到了,还好有ftp的密码,由dede的mysql密码配置文件:common.inc.php获得了mysql权限。
admin表中pwd中赫然写着:c3949ba59abbe56e057f,我勒个去,这是啥加密方式,见过混合加密的,但一般最后都是md5一下,应该16或32位,这个什么呀??20位….
百度了一下织梦管理员密码的加密方式,发现想这个方法的人绝了,一般都是混合字符串进去然后md5,dedecms呢?直接md5然后取32位中从第五位开始的20个字符,按照概率来说这20个确实可以用于比对密码是否正确.
转念一想不对呀,大名鼎鼎的md5 16位加密不是也是从32位中提取的吗?也就是从第九位开始取16位,正好在这20个字符串里.
就是说比如原密码是123456
他的md5 32是:e10adc3949ba59abbe56e057f20f883e
dede取:e10adc3949ba59abbe56e057f20f883e? 就是:c3949ba59abbe56e057f2
实际上md5 16是:?e10adc3949ba59abbe56e057f20f883e 就是:49ba59abbe56e057
也就是说你的dede加密密码只要从第四位开始取16位就是md5 16的密码:c3949ba59abbe56e057f2
这种几乎是解决不了了,但我们可以使用一些简单的办法,直接MD5一个密码,再前后尝试,还有一种办法.
密码重设工具有UTF-8/GBK两个版本,适用于 DedeCMS V5.3-5.6 版本,这样可以方便新手操作,也可以进数据库对加密后的密码进行破解,这样也能找回忘记了的密码。
一、GBK版本的网站点下面的这段代码,代码如下:
- <?php
-
-
-
-
-
- require_once(dirname(__FILE__)."/include/common.inc.php");
- if(emptyempty($step))
- {
- $step = 1;
- }
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>密码重设工具_GBK</title>
- <style type="text/css">
- <!--
- body {
- font-family: "MS Serif", "New York", serif;
- font-size: 12px;
- color: #000;
- }
- table {
- border-top-width: 1px;
- border-right-width: 1px;
- border-left-width: 1px;
- border-top-style: dotted;
- border-right-style: dotted;
- border-left-style: dotted;
- border-top-color: #CCC;
- border-right-color: #CCC;
- border-left-color: #CCC;
- }
- td {
- border-bottom-width: 1px;
- border-bottom-style: dotted;
- border-bottom-color: #CCC;
- }
- -->
- </style>
- </head>
- <body>
- <?php
- if($step==1)
- {
- $dsql->SetQuery("Select * From `detest_admin` where usertype='10'");
- $dsql->Execute("ut");
- ?>
- <table width="98%" border="0" align="center" cellpadding="3" cellspacing="1">
- <tr>
- <td height="19" bgcolor="#E7E7E7"><table width="96%" border="0" cellspacing="1" cellpadding="1">
- <tr>
- <td width="24%"><b><strong>第一步:选择管理员账号</strong></b></td>
- <td width="76%" align="right"> </td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td height="215" align="center" valign="top" bgcolor="#FFFFFF"><form action="radminpass.php" method="post" name="form1" id="form1">
- <input type="hidden" name="step" value="2" />
- <table width="98%" border="0" cellspacing="1" cellpadding="1">
- <tr>
- <td height="60" colspan="2" align="left">本工具是用于新人忘记管理员密码重设所制作,只需要将radminpass.php文件拷贝到根目录,运行“http:
- </tr>
- <tr>
- <td width="16%" height="30" align="left">选择超级管理员ID:</td>
- <td width="84%" align="left">
- <select name='id' style='width:150px'>
- <?php
- while($myrow = $dsql->GetObject("ut"))
- {
- echo "<option value='".$myrow->id."'>".$myrow->userid."</option>rn";
- }
- ?>
- </select>
- </td>
- </tr>
- <tr>
- <td height="60" align="left"> </td>
- <td align="left"><input type="submit" name="Submit" value="下一步>" class="coolbg np" /></td>
- </tr>
- </table>
- </form></td>
- </tr>
- </table>
- <?php
- }elseif($step==2){
- $row = $dsql->GetOne("Select * From `detest_admin` where id='$id'");
- ?>
- <table width="98%" border="0" align="center" cellpadding="3" cellspacing="1">
- <tr>
- <td height="19" bgcolor="#E7E7E7"><table width="96%" border="0" cellspacing="1" cellpadding="1">
- <tr>
- <td width="24%"><b><strong>第二步:修改管理员密码</strong></b></td>
- <td width="76%" align="right"> </td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td height="215" align="center" valign="top" bgcolor="#FFFFFF"><form action="radminpass.php" method="post" name="form1" id="form1">
- <input name="step" type="hidden" id="step" value="3" />
- <input type="hidden" name="id" value="<?php echo $row['id']?>" />
- <table width="98%" border="0" cellspacing="1" cellpadding="1">
- <tr>
- <td width="16%" height="30" align="left">用户登录ID:</td>
- <td width="84%" align="left"><?php echo $row['userid']?></td>
- </tr>
- <tr>
- <td height="30" align="left">用户笔名:</td>
- <td align="left"><input name="uname" type="text" id="uname" size="16" value="<?php echo $row['uname']?>" style="width:200px" />
- (发布文章后显示责任编辑的名字) </td>
- </tr>
- <tr>
- <td height="30" align="left">用户密码:</td>
- <td align="left"><input name="pwd" type="text" id="pwd" size="16" style="width:200px" />
- (留空则不修改,只能用'0-9a-zA-Z.@_-!'以内范围的字符) </td>
- </tr>
- <tr>
- <td height="60" align="left"> </td>
- <td align="left"><input type="submit" name="Submit" value="确定修改 " class="coolbg np" /></td>
- </tr>
- </table>
- </form></td>
- </tr>
- </table>
- <?php
- }elseif($step==3){
- $pwdm = '';
- if($pwd!=''){
- $pwdm = ",pwd='".md5($pwd)."'";
- $pwd = ",pwd='".substr(md5($pwd),5,20)."'";
- }
- $query = "Update `detest_admin` set uname='$uname' $pwd where id='$id'";
- $dsql->ExecuteNoneQuery($query);
- $query = "Update `detest_member` set uname='$uname' $pwdm where mid='$id'";
- $dsql->ExecuteNoneQuery($query);
- ShowMsg("成功更改一个帐户!","radminpass.php");
- }
- ?>
- </body>
- </html>
二、保存为radminpass.php,上传到网站根目录运行“http://yousite/radminpass.php(yousite为网站域名)”,按照操作执行就可以,恢复完成后请及时删除这个文件.