第一次代码审计之HsycmsV2.0—MVC框架

1.从开始出发—初步介绍MVC框架

MVC顾名思义是三个单词的首字母放在一起的简称,M-model(模型),V-view(试图),C-controller(控制器),其间的联系又是怎么样的呢,日常贴图

至于MVC框架的具体运作方式,会在后面的文章的介绍,在此不做过多赘述。


2.写配置文件

在mvc框架中,需重点审核的就是控制器下所对应的php文件。从安装开始,

index.php是入口文件,install是模块,index控制器,check.html对应的是方法,详细介绍见

《ThinkPHP5快速入门》

代码审计


在app/install/controller/index.php文件中,首先是config()方法,

在此处,变量$DB被赋值,已经是一个数组,可以看到,$db是可控的,继续跟进$DB,发现在后面的session()方法中,将$DB的值赋给db_config作用是设置session。见图

跟进db_config,发现其进入sql方法,并赋值给变量$dbconfig,并通过write_config()方法赋值给变量$conf,利用seay全局搜索write_config(),

发现此方法在app/install/common.php文件中,并且只是做简单的替换,没有任何过滤或者别的处理,直接写入database.php文件,于是便可以任意写配置文件。


在这里写。


但道路纵使曲折的,写进去了,但安装失败。参考Jokuuy师傅的文章发现,只有在write_config()之前的所有执行不报错的情况下,该方法才会执行。且如果想在数据表前缀处写一句话,则必须结合sql语句进行构造,否则安装数据库失败

就像这样。
此处又看了师傅们的文章,水平有限,真的定位不到这里了

之后就知道了,构造如下payload,

sy_user` set password=1 or '.@eval($_POST["q"]).'#


成功getshell,



该文章参考Jokuuy师傅。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容