dedecms审计(废案)

后台

http://127.0.0.1:855/dede/login.php?gotopage=%2Fdede%2F

因为像这个例子:

分组拆分

```regex

(a+)+$

```

输入:

```text

aaaaaaaab

```

字符串**明明有结尾**,最后那个 `b` 后面就是结尾。

真正的问题是:

  • 模式要求:**整串到结尾为止都只能是 a**

  • 实际输入:最后混进来一个 `b`

  • 引擎就会怀疑:

**是不是前面的 `a` 分组方式不对?**

  • 然后开始疯狂换分法重试

为什么会这样

看这个模式:

```regex

(a+)+$

```

它的意思不是简单的"找 `a` 的结尾"。

它的真实意思是:

  1. `a+`:先匹配一段 `a`

  2. `(a+)+`:这样的"a 段"可以重复很多次

  3. `$`:一直要匹配到字符串结尾

也就是:

> **整串必须能被拆成若干段,每段都是一个或多个 `a`,而且最后刚好到字符串末尾。**


难点就在"怎么拆"

比如这串:

```text

aaaa

```

可以拆成:

  • `aaaa`

  • `aaa` + `a`

  • `aa` + `aa`

  • `aa` + `a` + `a`

  • `a` + `aaa`

  • `a` + `a` + `aa`

  • `a` + `a` + `a` + `a`

这些拆法对模式来说,前面都"看起来合法"。

所以当最后碰到 `b` 失败时,引擎不会立刻认输,它会想:

> "也许不是字符串错了,是我刚才拆法错了。"

于是它就换一种拆法再试。


所以它不是找不到结尾,而是:

**前面有太多种"可能的成功路径"**

最后一失败,就把这些路径反复回放。

这就是 **回溯爆炸**。


这本质是不是逻辑漏洞?

广义上,是的

如果你把"逻辑漏洞"理解成:

> 程序的处理逻辑在某些输入下出现了开发者没预料到的坏行为

index

php 复制代码
<?php
/**
 * 管理后台首页
 *
 * @version        $Id: index.php 1 11:06 2010年7月13日Z tianya $
 * @package        DedeCMS.Administrator
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */

//‌preg_match 是 PHP 中用来做正则表达式匹配的函数‌
//$_SERVER 是PHP编程语言中预定义的超全局数组,属于服务器变量类别,用于存储与服务器环境及HTTP请求相关的信息。
//本地服务识别
//$_server['server_software'] #服务器标识的字串,兼容环境
//如果服务器标识捕获到php+多个内容加上后面的Development Server
//贪婪匹配.单个字符,*重复0次或者多次
//先匹配php,后面所有的全部吃掉,再回退看后面的条件,如果吐完是空匹配失败
//
//php
//dos?$要求匹配
if ( preg_match("#PHP (.*) Development Server#",$_SERVER['SERVER_SOFTWARE']) )
{
// 是 PHP 中用于获取‌当前请求的完整 URI 路径及查询字符
//如果路径是对的就跳转
//dirname取目录部分
//一个客户端获取,一个获取服务器执行本身目录
//混合容器$_SERVER
    if ( $_SERVER['REQUEST_URI'] == dirname($_SERVER['SCRIPT_NAME']) )
    {
//跳转
        header('HTTP/1.1 301 Moved Permanently');
//重定向到url
        header('Location:'.$_SERVER['REQUEST_URI'].'/');
    }
}

 //包含配置目录
//D:/dedecms/include/拼接
require_once(DEDEINC.'/dedetag.class.php');

//D:/dedecms/deta/admin/quickmenu-用户id.txt
$myIcoFile = DEDEDATA.'/admin/quickmenu-'.$cuserLogin->getUserID().'.txt';

//拼接
$defaultIcoFile = DEDEDATA.'/admin/quickmenu.txt';
//如果路径存在且等于上面的
if(!file_exists($myIcoFile)) $myIcoFile = $defaultIcoFile;

//运行
require(DEDEADMIN.'/inc/inc_menu_map.php');
//包含
//这里xss可能可以命令执行
include(DEDEADMIN.'/templets/index2.htm');

exit();

/dedetag.class.php

php 复制代码
<?php   if(!defined('DEDEINC')) exit("Request Error!");

/inc/inc_menu_map.php

php 复制代码
<?php
/**
 * 菜单地图
 *
 * @version        $Id: inc_menu_map.php 1 10:32 2010年7月21日Z tianya $
 * @package        DedeCMS.Administrator
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
require_once(dirname(__FILE__)."/../config.php");

$maparray = array(1=>'文档相关',2=>'系统设置',3=>'必须辅助功能',4=>'网站更新操作',5=>'会员相关',6=>'基本模块插件');

//载入可发布频道
$addset = '';

//检测可用的内容模型
if($cfg_admin_channel = 'array' && count($admin_catalogs) > 0)
{
    $admin_catalog = join(',', $admin_catalogs);
    $dsql->SetQuery(" SELECT channeltype FROM `#@__arctype` WHERE id IN({$admin_catalog}) GROUP BY channeltype ");
}
else
{
    $dsql->SetQuery(" SELECT channeltype FROM `#@__arctype` GROUP BY channeltype ");
}
$dsql->Execute();
$candoChannel = '';
while($row = $dsql->GetObject())
{
    $candoChannel .= ($candoChannel=='' ? $row->channeltype : ','.$row->channeltype);
}
if(empty($candoChannel)) $candoChannel = 1;
$dsql->SetQuery("SELECT id,typename,addcon,mancon FROM `#@__channeltype` WHERE id IN({$candoChannel}) AND id<>-1 AND isshow=1 ORDER BY id ASC");
$dsql->Execute();
while($row = $dsql->GetObject())
{
    $addset .= "  <m:item name='{$row->typename}' ischannel='1' link='{$row->mancon}?channelid={$row->id}' linkadd='{$row->addcon}?channelid={$row->id}' channelid='{$row->id}' rank='' target='main' />\r\n";
}
//////////////////////////
$menusMain = "
-----------------------------------------------

<m:top mapitem='1' item='1_' name='常用操作' display='block'>
  <m:item name='网站栏目管理' link='catalog_main.php' ischannel='1' addalt='创建栏目' linkadd='catalog_add.php?listtype=all' rank='t_List,t_AccList' target='main' />
  <m:item name='所有档案列表' link='content_list.php' rank='a_List,a_AccList' target='main' />
  <m:item name='等审核的档案' link='content_list.php?arcrank=-1' rank='a_Check,a_AccCheck' target='main' />
  <m:item name='我发布的文档' link='content_list.php?mid=".$cuserLogin->getUserID()."' rank='a_List,a_AccList,a_MyList' target='main' />
  <m:item name='评论管理' link='feedback_main.php' rank='sys_Feedback' target='main' />
  <m:item name='内容回收站' link='recycling.php' ischannel='1' addalt='清空回收站' addico='img/gtk-del.png' linkadd='archives_do.php?dopost=clear&aid=no' rank='a_List' target='main' />
</m:top>

<m:top mapitem='1' item='1_' name='内容管理' display='block'>
  $addset
  <m:item name='专题管理' ischannel='1' link='content_s_list.php' linkadd='spec_add.php' channelid='-1' rank='spec_New' target='main' />
</m:top>

<m:top mapitem='1' item='1_' name='频道模型' display='block' rank='t_List,t_AccList,c_List,temp_One'>
  <m:item name='内容模型管理' link='mychannel_main.php' rank='c_List' target='main' />
  <m:item name='单页文档管理' link='templets_one.php' rank='temp_One' target='main'/>
  <m:item name='联动类别管理' link='stepselect_main.php' rank='c_Stepseclect' target='main' />
  <m:item name='自由列表管理' link='freelist_main.php' rank='c_List' target='main' />
  <m:item name='自定义表单' link='diy_main.php' rank='c_List' target='main' />
</m:top>

<m:top mapitem='3' item='3_' name='采集管理' display='none' rank='co_NewRule,co_ListNote,co_ViewNote,co_Switch,co_GetOut'>
  <m:item name='采集节点管理' link='co_main.php' rank='co_ListNote' target='main' />
  <m:item name='临时内容管理' link='co_url.php' rank='co_ViewNote' target='main' />
  <m:item name='导入采集规则' link='co_get_corule.php' rank='co_GetOut' target='main'/>
  <m:item name='监控采集模式' link='co_gather_start.php' rank='co_GetOut' target='main'/>
  <m:item name='采集未下载内容' link='co_do.php?dopost=coall' rank='co_GetOut' target='main'/>
</m:top>

<m:top mapitem='3' item='1_3_3' name='批量维护' display='block'>
  <m:item name='更新系统缓存' link='sys_cache_up.php' rank='sys_ArcBatch' target='main' />
  <m:item name='文档批量维护' link='content_batch_up.php' rank='sys_ArcBatch' target='main' />
  <m:item name='搜索关键词维护' link='search_keywords_main.php' rank='sys_Keyword' target='main' />
  <m:item name='文档关键词维护' link='article_keywords_main.php' rank='sys_Keyword' target='main' />
  <m:item name='自动摘要|分页' link='article_description_main.php' rank='sys_Keyword' target='main' />
  <m:item name='TAG标签管理' link='tags_main.php' rank='sys_Keyword' target='main' />
  <m:item name='数据库内容替换' link='sys_data_replace.php' rank='sys_ArcBatch' target='main' />
</m:top>

<m:top mapitem='4' item='5_' name='自动任务' notshowall='1'  display='block' rank='sys_MakeHtml'>
  <m:item name='一键更新网站' link='makehtml_all.php' rank='sys_MakeHtml' target='main' />
  <m:item name='更新系统缓存' link='sys_cache_up.php' rank='sys_ArcBatch' target='main' />
</m:top>

<m:top mapitem='4' item='5_' name='HTML更新' notshowall='1' display='none' rank='sys_MakeHtml'>
  <m:item name='更新主页HTML' link='makehtml_homepage.php' rank='sys_MakeHtml' target='main' />
  <m:item name='更新栏目HTML' link='makehtml_list.php' rank='sys_MakeHtml' target='main' />
  <m:item name='更新文档HTML' link='makehtml_archives.php' rank='sys_MakeHtml' target='main' />
  <m:item name='更新网站地图' link='makehtml_map_guide.php' rank='sys_MakeHtml' target='main' />
  <m:item name='更新RSS文件' link='makehtml_rss.php' rank='sys_MakeHtml' target='main' />
  <m:item name='获取JS文件' link='makehtml_js.php' rank='sys_MakeHtml' target='main' />
  <m:item name='更新专题HTML' link='makehtml_spec.php' rank='sys_MakeHtml' target='main' />
</m:top>

<m:top mapitem='3' item='1_6_' name='附件管理' display='none' rank='sys_Upload,sys_MyUpload,plus_文件管理器'>
  <m:item name='上传新文件' link='media_add.php' rank='' target='main' />
  <m:item name='附件数据管理' link='media_main.php' rank='sys_Upload,sys_MyUpload' target='main' />
  <m:item name='文件式管理器' link='media_main.php?dopost=filemanager' rank='plus_文件管理器' target='main' />
</m:top>

<m:top mapitem='5' item='6_' name='会员管理' display='none' rank='member_List,member_Type'>
  <m:item name='注册会员列表' link='member_main.php' rank='member_List' target='main' />
  <m:item name='会员级别设置' link='member_rank.php' rank='member_Type' target='main' />
  <m:item name='积分头衔设置' link='member_scores.php' rank='member_Type' target='main' />
  <m:item name='会员模型管理' link='member_model_main.php' rank='member_Type' target='main' />
  <m:item name='会员短信管理' link='member_pm.php' rank='member_Type' target='main' />
  <m:item name='会员留言管理' link='member_guestbook.php' rank='member_Type' target='main' />
  <m:item name='会员动态管理' link='member_info_main.php?type=feed' rank='member_Type' target='main' />
  <m:item name='会员心情管理' link='member_info_main.php?type=mood' rank='member_Type' target='main' />
</m:top>

<m:top mapitem='2' item='10_' name='系统设置' display='none' rank='sys_User,sys_Group,sys_Edit,sys_Log,sys_Data'>
  <m:item name='系统基本参数' link='sys_info.php' rank='sys_Edit' target='main' />
  <m:item name='系统用户管理' link='sys_admin_user.php' rank='sys_User' target='main' />
  <m:item name='用户组设定' link='sys_group.php' rank='sys_Group' target='main' />
  <m:item name='服务器分布/远程' link='sys_multiserv.php' rank='sys_Group' target='main' />
  <m:item name='系统日志管理' link='log_list.php' rank='sys_Log' target='main' />
  <m:item name='验证安全设置' link='sys_safe.php' rank='sys_verify' target='main' />
  <m:item name='图片水印设置' link='sys_info_mark.php' rank='sys_Edit' target='main' />
  <m:item name='自定义文档属性' link='content_att.php' rank='sys_Att' target='main' />
  <m:item name='软件频道设置' link='soft_config.php' rank='sys_SoftConfig' target='main' />
  <m:item name='防采集串混淆' link='article_string_mix.php' rank='sys_StringMix' target='main' />
  <m:item name='随机模板设置' link='article_template_rand.php' rank='sys_StringMix' target='main' />
  <m:item name='计划任务管理' link='sys_task.php' rank='sys_Task' target='main' />
  <m:item name='数据库备份/还原' link='sys_data.php' rank='sys_Data' target='main' />
  <m:item name='SQL命令行工具' link='sys_sql_query.php' rank='sys_Data' target='main' />
  <m:item name='文件校验[S]' link='sys_verifies.php' rank='sys_verify' target='main' />
  <m:item name='病毒扫描[S]' link='sys_safetest.php' rank='sys_verify' target='main' />
  <m:item name='系统错误修复[S]' link='sys_repair.php' rank='sys_verify' target='main' />
</m:top>

<m:top mapitem='5' item='10_6_' name='支付工具' display='none' rank='sys_Data'>
  <m:item name='点卡产品分类' link='cards_type.php' rank='sys_Data' target='main' />
  <m:item name='点卡产品管理' link='cards_manage.php' rank='sys_Data' target='main' />
  <m:item name='会员产品分类' link='member_type.php' rank='sys_Data' target='main' />
  <m:item name='会员消费记录' link='member_operations.php' rank='sys_Data' target='main' />
  <m:item name='商店订单记录' link='shops_operations.php' rank='sys_Data' target='main' />
  <m:item name='支付接口设置' link='sys_payment.php' .php' rank='sys_Data' target='main' />
  <m:item name='配货方式设置' link='shops_delivery.php' rank='sys_Data' target='main' />
</m:top>

<m:top mapitem='2' item='10_7_' name='模板管理' display='none' rank='temp_One,temp_Other,temp_MyTag,temp_test,temp_All'>
  <m:item name='默认模板管理' link='templets_main.php' rank='temp_All' target='main'/>
  <m:item name='标签源码管理' link='templets_tagsource.php' rank='temp_All' target='main'/>
  <m:item name='自定义宏标记' link='mytag_main.php' rank='temp_MyTag' target='main'/>
  <m:item name='智能标记向导' link='mytag_tag_guide.php' rank='temp_Other' target='main'/>
  <m:item name='全局标记测试' link='tag_test.php' rank='temp_Test' target='main'/>
</m:top>

";

//载入插件菜单
$plusset = '';
$dsql->SetQuery("SELECT * FROM `#@__plus` WHERE isshow=1 ORDER BY aid ASC");
$dsql->Execute();
while($row = $dsql->GetObject()) 
{
    $plusset .= $row->menustring."\r\n";
}

$menusMain .= "
<m:top mapitem='6' name='模块管理' c='6,' display='block'>
  <m:item name='模块管理' link='module_main.php' rank='sys_module' target='main' />
  <m:item name='上传新模块' link='module_upload.php' rank='sys_module' target='main' />
  <m:item name='模块生成向导' link='module_make.php' rank='sys_module' target='main' />
</m:top>

<m:top mapitem='6' item='7' name='辅助插件' display='block'>
  <m:item name='插件管理器' link='plus_main.php' rank='10' target='main' />
  $plusset
</m:top>
";

$mapstring = '';
$dtp = new DedeTagparse();
$dtp->SetNameSpace('m','<','>');
$dtp->LoadString($menusMain);

foreach($maparray as $k=>$bigname)
{
    $mapstring .= "<dl class='maptop'>\r\n";
    $mapstring .= "<dt class='bigitem'>$bigname</dt>\r\n";
    $mapstring .= "<dd>\r\n";
    foreach($dtp->CTags as $ctag)
    {
        if($ctag->GetAtt('mapitem') == $k)
        {
            $mapstring .= "<dl class='mapitem'>\r\n";
            $mapstring .= "<dt>".$ctag->GetAtt('name')."</dt>\r\n";
            $mapstring .= "<dd>\r\n<ul class='item'>\r\n";
            $dtp2 = new DedeTagParse();
            $dtp2->SetNameSpace('m', '<', '>');
            $dtp2->LoadSource($ctag->InnerText);
            foreach($dtp2->CTags as $j=>$ctag2)
            {
                $mapstring .= "<li><a href='".$ctag2->GetAtt('link')."' target='".$ctag2->GetAtt('target')."'>".$ctag2->GetAtt('name')."</a></li>\r\n";
            }
            $mapstring .= "</ul>\r\n</dd>\r\n</dl>\r\n";
        }
    }
    $mapstring .= "</dd>\r\n</dl>\r\n";
}
/../config.php
php 复制代码
if(file_exists(DEDEDATA.'/admin/skin.txt'))
{
	$skin = file_get_contents(DEDEDATA.'/admin/skin.txt');
	$cfg_admin_skin = !in_array($skin, array(1,2,3,4))? 1 : $skin;
}
$_csrf_name = '_csrf_name_'.substr(md5(md5($cfg_cookie_encode)),0,8);
$_csrf_hash =  GetCookie($_csrf_name);
if ( empty($_csrf_hash) )
{
    $_csrf_hash = md5(uniqid(mt_rand(), TRUE));
    if (strtoupper($_SERVER['REQUEST_METHOD']) !== 'POST')
    {
        PutCookie($_csrf_name, $_csrf_hash, 7200, '/');
    }
}

$_csrf =  array(
    'name'  =>'_dede'.$_csrf_name,
    'hash'  => $_csrf_hash,
);
//检验用户登录状态
$cuserLogin = new userLogin();

if($cuserLogin->getUserID()==-1)
{
    if ( preg_match("#PHP (.*) Development Server#",$_SERVER['SERVER_SOFTWARE']) )
    {
        $dirname = dirname($_SERVER['SCRIPT_NAME']);
        header("location:{$dirname}/login.php?gotopage=".urlencode($dedeNowurl));
    } else {
        header("location:login.php?gotopage=".urlencode($dedeNowurl));
    }
    exit();
}
/userlogin.class.php
php 复制代码
<?php   if(!defined('DEDEINC')) exit('Request Error!');
/**
 * 管理员登陆类
 *
 * @version        $Id: userlogin.class.php 1 15:59 2010年7月5日Z tianya $
 * @package        DedeCMS.Libraries
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
session_start();

/templets/index2.htm(高风险)

php 复制代码
<!--This is IE DTD patch , Don't delete this line.-->
<!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=<?php echo $cfg_soft_lang; ?>">
<title><?php echo $cfg_webname; ?>-<?php echo $cfg_softname." ".$cfg_version; ?></title>
<link href="css/frame.css" rel="stylesheet" type="text/css" />
<script src="../include/js/jquery/jquery.js" language="javascript" type="text/javascript"></script>
<script src="js/frame.js" language="javascript" type="text/javascript"></script>
<link href="images/style<?php echo $cfg_admin_skin;?>/style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
#skinlist {
    display: block;
    height: 11px;
	margin-top: 10px;
    overflow: hidden;
    width: 86px;
}
#skin div {
    float: left;
}
#skin li {
    cursor: pointer;
    float: left;
    height: 11px;
    width: 14px;
}
#def div, #s1 div, #s2 div, #s3 div, #s4 div{
    background-image: url("images/skinbutton.png");
    background-repeat: no-repeat;
}
#s1 div {
    background-position: 0 0px;
}
#s2 div {
    background-position: 0 -11px;
}
#s3 div {
    background-position: 0 -22px;
}
#s4 div {
    background-position: 0 -33px;
}
#s1 div.sel {
    background: url("images/skinbutton.png") no-repeat scroll -14px top transparent;
}
#s2 div.sel {
    background: url("images/skinbutton.png") no-repeat scroll -14px -11px transparent;
}
#s3 div.sel {
    background: url("images/skinbutton.png") no-repeat scroll -14px -22px transparent;
}
#s4 div.sel {
    background: url("images/skinbutton.png") no-repeat scroll -14px -33px transparent;
}
</style>
</head>
<body class="showmenu">
<div class="pagemask"></div>
<iframe class="iframemask"></iframe>
<div class="allmenu">
  <div class="allmenu-box">
    <?php
	echo $mapstring;
?>
    <br style='clear:both' />
  </div>
</div>
<div class="head">
  <div class="top">
    <div class="top_logo"> <img src="images/style<?php echo $cfg_admin_skin;?>/admin_top_logo.gif" width="200" height="37" alt="DedeCms Logo" title="Welcome use DedeCms" id="topdedelogo" /> </div>
    <div class="top_link">
      <ul>
        <li class="welcome">您好:<?php echo $cuserLogin->getUserName(); ?> ,欢迎使用DedeCMS!</li>
        <li><a href="index_menu.php" target="menu">主菜单</a></li>
        <li><a href="#" onclick="JumpFrame('catalog_menu.php','public_guide.php');">内容发布</a></li>
        <li><a href="#" onclick="JumpFrame('index_menu.php','content_list.php');">内容维护</a></li>
        <li><a href="#" onclick="JumpFrame('index_menu.php','index_body.php');">系统主页</a></li>
        <li><a href="../index.php?upcache=1" target="_blank">网站主页</a></li>
        <li><a href="../member" target="_blank">会员中心</a></li>
        <li><a href="exit.php" target="_top">注销</a></li>
      </ul>
      <div class="quick"> <a href="#" class="ac_qucikmenu" id="ac_qucikmenu">快捷方式</a> <a href="#" class="ac_qucikadd" id="ac_qucikadd">
        <!--ADD-->
        </a> </div>
    </div>
  </div>
  <div class="topnav">
    <div class="menuact"> <a href="#" id="togglemenu">隐藏菜单</a>
      <?php
			if($cuserLogin->getUserType() >= 10) echo '<a href="#" id="allmenu">功能地图</a>';
			?>
    </div>
    <div id="skin">
        <div>
          <ul id="skinlist">
            <li id="s1">
              <div<?php echo $cfg_admin_skin == 1? ' class="sel"' : '';?>><img alt="织梦绿" src="images/blank.gif"></div>
            </li>
            <li id="s2">
              <div<?php echo $cfg_admin_skin == 2? ' class="sel"' : '';?>><img alt="淡蓝" src="images/blank.gif"></div>
            </li>
            <li id="s3">
              <div<?php echo $cfg_admin_skin == 3? ' class="sel"' : '';?>><img alt="咖啡" src="images/blank.gif"></div>
            </li>
            <li id="s4">
              <div<?php echo $cfg_admin_skin == 4? ' class="sel"' : '';?>><img alt="水墨" src="images/blank.gif"></div>
            </li>
          </ul>
        </div>

    </div>
    <div class="nav" id="nav"> </div>
    <div class="sysmsg">
      <h3>滚动消息:</h3>
      <div class="scroll">
        <form action="action_search.php" target="main" method="post">
          <input name="keyword" type="text" value="功能搜索" onfocus="if(this.value=='功能搜索'){this.value='';}"  onblur="if(this.value==''){this.value='功能搜索';}" class="allsearch" style="width:150px;"/>
          <input name="" type="submit" value="搜索" class="np"/>
          <a href='http://bbs.dedecms.com' target='_blank'>官方论坛</a> <a href='http://help.dedecms.com' target='_blank'>在线帮助</a>
        </form>
      </div>
    </div>
  </div>
</div>
<div class="left">
  <div class="menu" id="menu">
    <iframe src="index_menu.php" id="menufra" name="menu" frameborder="0"></iframe>
  </div>
</div>
<div class="right">
  <div class="main">
    <iframe id="main" name="main" frameborder="0" src="index_body.php"></iframe>
  </div>
  <!--<div id="help"><span id="content"><a href="#">栏目管理操作使用说明</a></span></div>-->
</div>
<div class="qucikmenu" id="qucikmenu">
  <ul>
    <?php
      $dtp = new DedeTagparse();
      $dtp->SetNameSpace('menu','<','>');
      $dtp->LoadTemplet($myIcoFile);
      if(is_array($dtp->CTags))
      {
         foreach($dtp->CTags as $ctag)
         {
         		$title = $ctag->GetAtt('title');
         		$ico = $ctag->GetAtt('ico');
         		$link = $ctag->GetAtt('link');
         		echo "<li><a href='{$link}' target='main'>{$title}</a></li>\r\n";
      		}
			}
	 ?>
  </ul>
</div>
<script language="javascript">
function JumpFrame(url1, url2){
    jQuery('#menufra').get(0).src = url1;
    jQuery('#main').get(0).src = url2;
}
(function($)
{
 	$("#skinlist>li").click(function()
	 {
		 var adminskin = $(this).index() + 1;
		 var csshref = "images/style"+adminskin+"/style.css";
		 $("#skinlist>li").each(function(){$(this).children('div').attr('class', '')});
		 $("#topdedelogo").attr('src', 'images/style'+adminskin+'/admin_top_logo.gif')
		 $('link').each(function()
		 {
			 if($(this).attr('href').match(/style.css$/))
			 {
				 $(this).attr('href',csshref);
			 }
		 });
		 $(this).children('div').attr('class', 'sel');
		 $(window.frames["menu"].document).find("link").each(function()
		 {
			 if($(this).attr('href').match(/style.css$/))
			 {
				 $(this).attr('href',csshref);
			 }
		 });
		 $(window.frames["main"].document).find("link").each(function()
		 {
			 if($(this).attr('href').match(/style.css$/))
			 {
				 $(this).attr('href',csshref);
			 }
		 });
		 $.get('index_body.php?dopost=setskin&cskin='+adminskin);
	 });
})(jQuery);
</script>
</body>
</html>

getUserID

php 复制代码
 function getUserID()
    {
//userID不是空
        if($this->userID != '')
        {
            return $this->userID;
        }
        else
        {
            return -1;
        }
    }

其它

config

php 复制代码
<?php
/**
 * @version        $Id: common.inc.php 3 17:44 2010-11-23 tianya $
 * @package        DedeCMS.Libraries
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */



// 生产环境使用production
define('DEDE_ENVIRONMENT', 'production');

//

if ( DEDE_ENVIRONMENT == 'production' )
{
    error_reporting(E_ALL || ~E_NOTICE);
} else {
    error_reporting(E_ALL);
}

//定义当前路径
//
define('DEDEINC', str_replace("\\", '/', dirname(__FILE__) ) );
//D:/dedecms,定义上级
define('DEDEROOT', str_replace("\\", '/', substr(DEDEINC,0,-8) ) );
//定义
define('DEDEDATA', DEDEROOT.'/data');
//定义
define('DEDEMEMBER', DEDEROOT.'/member');
//定义
define('DEDETEMPLATE', DEDEROOT.'/templets');

define('DEDEMODEL', './model');
define('DEDECONTROL', './control');
define('DEDEAPPTPL', './templates');

define('DEBUG_LEVEL', FALSE);

if (version_compare(PHP_VERSION, '5.3.0', '<'))
{
    set_magic_quotes_runtime(0);
}

if (version_compare(PHP_VERSION, '5.4.0', '>='))
{
    if (!function_exists('session_register'))
    {
        function session_register()
        {
            $args = func_get_args();
            foreach ($args as $key){
                $_SESSION[$key]=$GLOBALS[$key];
            }
        }
        function session_is_registered($key)
        {
            return isset($_SESSION[$key]);
        }
        function session_unregister($key){
            unset($_SESSION[$key]);
        }
    }
}

//是否启用mb_substr替换cn_substr来提高效率
$cfg_is_mb = $cfg_is_iconv = FALSE;
if(function_exists('mb_substr')) $cfg_is_mb = TRUE;
if(function_exists('iconv_substr')) $cfg_is_iconv = TRUE;

login

php 复制代码
<?php
/**
 * 后台登陆
 *
 * @version        $Id: login.php 1 8:48 2010年7月13日Z tianya $
 * @package        DedeCMS.Administrator
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
require_once(dirname(__FILE__).'/../include/common.inc.php');
require_once(DEDEINC.'/userlogin.class.php');
if(empty($dopost)) $dopost = '';

//检测安装目录安全性
if( is_dir(dirname(__FILE__).'/../install') )
{
    if(!file_exists(dirname(__FILE__).'/../install/install_lock.txt') )
    {
      $fp = fopen(dirname(__FILE__).'/../install/install_lock.txt', 'w') or die('安装目录无写入权限,无法进行写入锁定文件,请安装完毕删除安装目录!');
      fwrite($fp,'ok');
      fclose($fp);
    }
    //为了防止未知安全性问题,强制禁用安装程序的文件
    if( file_exists("../install/index.php") ) {
        @rename("../install/index.php", "../install/index.php.bak");
    }
    if( file_exists("../install/module-install.php") ) {
        @rename("../install/module-install.php", "../install/module-install.php.bak");
    }
	$fileindex = "../install/index.html";
	if( !file_exists($fileindex) ) {
		$fp = @fopen($fileindex,'w');
		fwrite($fp,'dir');
		fclose($fp);
	}
}

//更新服务器
require_once (DEDEDATA.'/admin/config_update.php');

if ($dopost=='showad')
{
    include('templets/login_ad.htm');
    exit;
}

//检测后台目录是否更名
$cururl = GetCurUrl();
if(preg_match('/dede\/login/i',$cururl))
{
    $redmsg = '<div class=\'safe-tips\'>您的管理目录的名称中包含默认名称dede,建议在FTP里把它修改为其它名称,那样会更安全!</div>';
}
else
{
    $redmsg = '';
}

//登录检测
$admindirs = explode('/',str_replace("\\",'/',dirname(__FILE__)));
$admindir = $admindirs[count($admindirs)-1];
if($dopost=='login')
{
    $validate = empty($validate) ? '' : strtolower(trim($validate));
    $svali = strtolower(GetCkVdValue());
    if(($validate=='' || $validate != $svali) && preg_match("/6/",$safe_gdopen)){
        ResetVdValue();
        ShowMsg('验证码不正确!','login.php',0,1000);
        exit;
    } else {
        $cuserLogin = new userLogin($admindir);
        if(!empty($userid) && !empty($pwd))
        {
            $res = $cuserLogin->checkUser($userid,$pwd);

            //success
            if($res==1)
            {
                $cuserLogin->keepUser();
                if(!empty($gotopage))
                {
                    ShowMsg('成功登录,正在转向管理管理主页!',$gotopage);
                    exit();
                }
                else
                {
                    ShowMsg('成功登录,正在转向管理管理主页!',"index.php");
                    exit();
                }
            }

            //error
            else if($res==-1)
            {
                ResetVdValue();
				ShowMsg('你的用户名不存在!','login.php',0,1000);
				exit;
            }
            else
            {
                ResetVdValue();
                ShowMsg('你的密码错误!','login.php',0,1000);
				exit;
            }
        }

        //password empty
        else
        {
            ResetVdValue();
            ShowMsg('用户和密码没填写完整!','login.php',0,1000);
			exit;
        }
    }
}

include('templets/login.htm');
相关推荐
执明wa2 小时前
为什么 Android 要把数据、视图和适配器分开?RecyclerView解读
android
三少爷的鞋2 小时前
别再让业务层裸奔 CarPropertyManager 了!谈谈汽车车载核心服务的架构封装
android
-SOLO-14 小时前
备份apk 工具
android
私人珍藏库18 小时前
【Android】BotHub-多模型AI机器人聚合库-内置免费模型
android·人工智能·智能手机·app·工具·多功能
普马萨特19 小时前
Wi-Fi 扫描频率限制与 Android 演进全解析
android
张拭心19 小时前
Android 17 新特性:后台音频交互限制加强
android·前端
张拭心19 小时前
Android 17 新特性:ProfilingManager 新触发器
android·前端
张拭心20 小时前
Android 17 新特性:MessageQueue 无锁实现
android·前端
brycegao20 小时前
如何搭建标准化 Git 工具流,保障 Android 团队代码质量
android·ci/cd