PHP-代码审计-Day-1

本文最后更新于 2024年10月21日 晚上

前言:俺开始学代码审计了,之前一直在黑盒方面学习,黑盒漏洞挖掘,没有接触过白盒,于是开始学习代码审计。【代码审计-Day X】系列是我的0基础学习记录笔记,写的不好,但是也是一个记录吧,多年之后再看也是会感慨万千吧哈哈,最后学习完了代码审计我会写一个总结性的文章,还望各位大佬师傅轻喷,欢迎随时指教小弟……

代码审计通用思路

  • 关键词法:使用正则匹配找关键词:特定函数,特定参数等等
  • 功能点法:围绕功能点去审计与功能点相关的漏洞
  • 工具自动审计法

SQL语句监控审计法

  • 使用SQL语句监控工具,网站实时监控执行了哪些SQL语句,从SQL中筛选出可能存在可控变量的语句,再定位到代码进一步分析是否存在漏洞
  • 注意:该方法适用于,SQL语句在同一时间内执行的不算很多的情况,如果同一时间内执行的太多,那么一句一句去筛选出可控变量也不够高效

image

MVC架构

概念

MVC(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)

为什么要用 MVC

随着系统业务复杂度越来越高,功能模块越来越庞大,耦合度也越来越高,导致系统的复杂度越来越不可控。为了更好的降低应用及模块间的耦合度,于是,诞生了一些我们熟知的网络架构(分布式微服务)和应用架构(三层架构、MVC架构,在此架构上又出现了一些框架,如SSM框架、SSH框架等,使用框架的好处就是结构清晰易于维护)

其中就有MVC架构,其要点是:

关注点分离(separation of concerns,缩写为 SoC)

MVC 模式有助于将前端和后端代码拆分为独立的组件,这样更便于管理,而且能够更方便地改动其中的某一部分而不会互相影响。

简介

  • 模型(Model):负责数据和业务逻辑,通常包含数据存储、检索和业务规则。
  • 视图(View):负责显示数据(模型)的用户界面,不包含业务逻辑。
  • 控制器(Controller):接收用户的输入,调用模型和视图去完成用户的请求。

简单流程

image

版本对比技术

  • 对于两个不同的版本,发生差异之处,有可能就是对安全漏洞修复之处,通过版本比对工具可以快速定位,从而进行代码审计分析

image

XDebug 动态调试技术

环境搭建

搭建教程:https://blog.csdn.net/nzjdsds/article/details/100114242

  • phpstudy-2018
  • phpstorm-2018.1.7
  • php-5.4.45
  • Apache

image