PHP-代码审计-Day-1
本文最后更新于 2024年6月19日 中午
前言:俺开始学代码审计了,之前一直在黑盒方面学习,黑盒漏洞挖掘,没有接触过白盒,于是开始学习代码审计。【代码审计-Day X】系列是我的0基础学习记录笔记,写的不好,但是也是一个记录吧,多年之后再看也是会感慨万千吧哈哈,最后学习完了代码审计我会写一个总结性的文章,还望各位大佬师傅轻喷,欢迎随时指教小弟……
代码审计通用思路
- 关键词法:使用正则匹配找关键词:特定函数,特定参数等等
- 功能点法:围绕功能点去审计与功能点相关的漏洞
- 工具自动审计法
SQL语句监控审计法
- 使用SQL语句监控工具,网站实时监控执行了哪些SQL语句,从SQL中筛选出可能存在可控变量的语句,再定位到代码进一步分析是否存在漏洞
- 注意:该方法适用于,SQL语句在同一时间内执行的不算很多的情况,如果同一时间内执行的太多,那么一句一句去筛选出可控变量也不够高效
MVC架构
概念
MVC(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)
为什么要用 MVC
随着系统业务复杂度越来越高,功能模块越来越庞大,耦合度也越来越高,导致系统的复杂度越来越不可控。为了更好的降低应用及模块间的耦合度,于是,诞生了一些我们熟知的网络架构(分布式微服务)和应用架构(三层架构、MVC架构,在此架构上又出现了一些框架,如SSM框架、SSH框架等,使用框架的好处就是结构清晰易于维护)
其中就有MVC架构,其要点是:
关注点分离(separation of concerns,缩写为 SoC)。
MVC 模式有助于将前端和后端代码拆分为独立的组件,这样更便于管理,而且能够更方便地改动其中的某一部分而不会互相影响。
简介
- 模型(Model):负责数据和业务逻辑,通常包含数据存储、检索和业务规则。
- 视图(View):负责显示数据(模型)的用户界面,不包含业务逻辑。
- 控制器(Controller):接收用户的输入,调用模型和视图去完成用户的请求。
简单流程
版本对比技术
- 对于两个不同的版本,发生差异之处,有可能就是对安全漏洞修复之处,通过版本比对工具可以快速定位,从而进行代码审计分析
XDebug 动态调试技术
环境搭建
搭建教程:https://blog.csdn.net/nzjdsds/article/details/100114242
- phpstudy-2018
- phpstorm-2018.1.7
- php-5.4.45
- Apache