某CMS审计(php)

前言

本文分为通读局部 和 破绽局部 通读局部个人觉得写的还不怎样完善,师傅们见谅,能够直接跳到后面的破绽局部看:)

通读局部

这是一个简单的MVC架构的CMS,开发者运用了他本人开发的一套框架—FrPHP

  • 大致目录构造

A:寄存后台的控制器 模板 插件等

Home:同上,寄存的用户相关的控制器和模板文件

Conf:配置文件目录

Frphp MVC框架目录

其他的要么里面没啥,要么一看就晓得的

Index.php

定义了一些常量然后包含了 FrPHP框架中的Fr.php 跟进

可见其定义了一个FrPHP类(25行)然后包含了 config.php

我们继续跟进看看config.php里面有什么 数据库衔接的配置文件(这边是我装置完之后的源码)

我们继续回到方才的FrPHP类 看看结构函数

又是定义了一堆常量。这边大多数常量都能看名字晓得个大约。我们用动态调试跑一下看看常量详细值。

详细就是这些

这边59-71行(Fr.php)对一些文件停止了包含。我们继续跟进。

/common/Functions.php

这里引入了FrPHP框架的公共函数库

/CONF/Functions.php

这边引入了项目的公共函数库(主要是一些CMS功用上的函数)

然后遍历/Extend 扩展目录 假如存在文件称号含有”.php“的文件 就包含它。

Arraypage / page 主要是和内容分页相关的函数

compressimage主要和图片处置有关的函数

DatabaseTool 主要和数据库操作有关

DB_API也差不多

FrSession 重写了session 把session存到了redis中

pinyin 是汉字转拼音的

vercode是考证码相关的

还有二维码,phpmailer 阿里,微信支付等杂七杂八的

然后检测缓存文件夹能否存在 不存在就创立

这边 FrPHP的结构函数局部就完毕了 然后回到它的RUN办法

90行设置数据库配置

此处没有数据就会给出报错,引导进入装置程序。

这边说到装置就顺便插播下装置这边

开头检测lock文件 否则exit() ,那这边就没有重装破绽了

这边经过act参数来肯定装置步骤

值得留意的是act为testdb这边 是存在sql注入的 不过前提是得找一个恣意文件删除的破绽来把lock文件删掉。。

回到上文

91行检测开发环境

主要是修正报错和cookie的httponly之类的相关配置

92行去除掉字符转义 ,后面作者定义了特地处置承受数据的函数

路由剖析

94行开端路由

首先判别能否有开启redis存session的功用 ,有就运用。

下面主要是判别恳求有没有session_id没有就给客户端设置一个

131-135行

获取指定要访问的页面,这边对url做了个url解码

我们动态调试下看看参数是啥

http://10.2.91.245/index.php?XDEBUG_SESSION_START=10062

137行开端从缓存中读取系统配置,没有就去数据库里找(M(’sysconfig’)→findAll())

我们看写下getCache函数

传入$str 经过 $s = *md5*(*md5*($str.'frphp'.$str)); 拼接变成缓存的文件名

然后639行拼接途径 640行检测缓存文件能否存在

643-646检测文件时间 获取缓存内容 之后判别缓存时间能否超时 超时就删掉 不超时就返回

回到上文路由处置,首先会从缓存中获取配置

没获取到缓存文件就从数据库中找 找到后设置缓存。 获取到了就从缓存中读取。

然后判别能否设置了wap 为1 默许为0

然后对$url($_SERVERS[‘REQUEST_URI’])停止交换 路由到wap页面

继续往下走

这边开端引入自定义路由 先设置了个route_ok变量为false

这边先判别 open_url_route能否为真 这个常量是一开端结构函数中获取一大堆常量的的中央获取的

为1

随后包含了Conf/route.php文件将返回值传给$open_url_route 我们跟进去看看,返回了路由匹配规则这边配合注释看

return [
    /**
        ['正则url','系统内真实链接','传输方式POST/GET,或者为空,则表示POST/GET都接纳']
        假如有多条匹配,默许第一条有效
        demo:
        ['/\/base\/([0-9]+)\.html$/','Home/test/id/$1','GET'],
        ['/\/xbase\/([0-9]+)\/(\w+)\.html$/','Home/test/id/$1/sq/$2','POST'],
        ['/\/test_([0-9]+)\.html$/','Home/test/id/$1','GET'],
        ['/\/abc\.html$/','/shangpin.html',''],
    **/
    //以下规则不可删除,否则会报错!
    //http://demo.xxxxcms.cn/Home/screen/molds/product/categories/3
    ['/^\/screen-(\w+)-([0-9]+)-(.*)/','Screen/index/molds/$1/tid/$2/jz_screen/$3',''],
    ['/^\/searchAll(.*)/','Home/searchAll','GET'],
    ['/^\/search(.*)/','Home/search','GET'],

];
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享
评论 共1条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像后擦0