『黑客与极客』通读审计之DOYOCMS


北京联盟_本文原题:通读审计之DOYOCMS
前言
首先大家看到我文章的标题 , 我这里所谓的“通读审计”就是把整个代码审计过程一字不差的记录下来 。 因为审计过很多CMS , 也看过很多代码审计文章 , 大多数都是把漏洞点提一下然后文章结束 , 对于不懂MVC的审计者来说 , 看其他人代码审计文章 , 很多细节问题搞不明白(因为我自己也是从那里过来的) , 所以读起来不是太舒畅 , 自己学习起来也有点吃力 , 尤其到MVC框架一块 。 然后这把就是给大家分享一下我个人的整个代码审计过程 , 以及如何发现漏洞 , 如何自己构造语句等等 。 这次审计的cms是DOYOCMS建站系统 , 因为我们学校使用的该系统 , 就随便拿一套过来记录吧 。 也是给自己做个记录 , 给大家分享个人经验 。
一、MVC的了解
这里就不再废话了 , 直接就开始吧 。
『黑客与极客』通读审计之DOYOCMS
本文插图

Index.php第二行 , 上来直接require进来一个config.php , 我们来看一下该文件到底做了哪些操作 。
『黑客与极客』通读审计之DOYOCMS
本文插图

OK , config.php文件定义了一些常量以及数据库信息 。
Index.php第三行 。
$doyoConfig[ 'view'][ 'config'][ 'template_dir'] = APP_PATH. '/template/'.$doyoConfig[ 'ext'][ 'view_themes'];
如下图的变量值赋给
$doyoConfig[ 'view'][ 'config'][ 'template_dir']
『黑客与极客』通读审计之DOYOCMS
本文插图

Index.php的第四行的
require(DOYO_PATH. "/sys.php");
把config.php的两个定义常量
define( "APP_PATH",dirname( __FILE__));
define( "DOYO_PATH",APP_PATH. "/include");
的DOYO_PATH与sys.php拼接起来并且包含(包含include/sys.php)
我们看一下包含进来的sys.php文件进行了哪些操作
『黑客与极客』通读审计之DOYOCMS
本文插图

Sys.php的第四行包含进来一个Functions.php文件 。 从文件名上来看来猜测是包含来的一些方法吧 。
打开看一下
『黑客与极客』通读审计之DOYOCMS
本文插图

好 , 确定包含方法 。 回到sys.php文件继续通读
Sys.php文件的第五行
$GLOBALS[ 'G_DY'] = spConfigReady( require(DOYO_PATH. "/inc.php"),$doyoConfig);
Require进来inc.php文件并且使用spConfigReady函数处理(之前提到的functions.php方法文件还记得吧)
跟进spConfigReady方法
『黑客与极客』通读审计之DOYOCMS
本文插图

可以看到第218行进行判断传入进来的$useconfig是否为数组 , 如果为数组进行遍历该数组 , 并且把传递过来的$useconfig保存到$preconfig内(合并数组) 。
从他调用该方法中给形参1传递一个require进来的文件可以判断 。 该文件直接return一个数组 。
打开包含进来的require(DOYO_PATH.”/inc.php”)文件来看一番
『黑客与极客』通读审计之DOYOCMS
本文插图

直接return一个数组
好 , 把inc.php文件return的数组与之前在index.php中定义过的$doyoConfig['view']['config']['template_dir']保存到全局变量$GLOBALS['G_DY']
回来继续读取sys.php
『黑客与极客』通读审计之DOYOCMS


推荐阅读