PHP代码审计学习02

news2025/2/3 19:53:02

目录

代码审计一般思路

Beescms代码审计(upload)

Finecms基于前台MVC任意文件上传挖掘思路

CLTPHP基于thinkphp5框架的文件上传挖掘思路


        今天来看PHP有框架MVC类,文件上传,断点调试挖掘。

        同样还是有关键字搜索功能点抓包两种方法来找到文件和代码段,最后进行分析。

        经过这两天的代码审计学习,有了一些认识,那就是渗透测试相当于是黑盒测试,而代码审计相当于是白盒测试,代码审计会把一个系统的源代码给你,然后使用源代码审计工具,针对某种漏洞进行定点挖掘,也可以随机挖掘。

代码审计一般思路

总结一下目前学习时自我认为的代码审计思路,比如针对文件上传漏洞,首先全局搜索关键字眼如“文件上传””upload”,找到文件上传点,然后看它使用了哪些参数,哪些函数,然后观察是否有可以绕过的可能。

搜索 $FILES  ->后台中心->上传图像->跟踪代码->逻辑判断

业务功能分析->会员中心->上传图像->跟踪代码->逻辑判断

搜索文件上传->会员中心->上传图像->跟踪代码->逻辑判断

Beescms代码审计(upload)

看了beescms两个关于文件上传的代码之后,发现一个有上传漏洞,一个没有上传漏洞。一个是只判断MIME类型,直接在文件上传时抓包修改MIME类型即可上传成功,而另一个则是使用了phpinfo()函数对后缀名进行验证。

这也给了我们在安全开发时候的一点启示,那就是不要依靠MIME类型来过滤文件,因为MIME可以伪造。

同时,使用PHPStorm+xdebug进行断点调试,可以清楚的知道每一步以及每一个工作流程调用了哪些函数和文件。与抓包相比,能抓到更多文件在执行时的状态,在找不到真实文件时,断点调试能够帮我们找到指定文件。

Finecms基于前台MVC任意文件上传挖掘思路

首先MVC模式在javaweb课程中学过,MVC就是模型视图控制器模式,首先View(视图)是指前端的内容,前端的内容提交给后端之后,首先被Controller层截获,然后对不同的请求进行响应并决定如何给前端展示数据,但这些内容都要经过Model层(dao+service)与数据库进行交互之后,再返回给前端。

有MVC架构的cms系统,在找处理文件上传的核心代码时,要去controller层里根据抓到的包去找。

分析之后,发现Finecms系统文件上传存在逻辑安全漏洞,它是先上传文件到系统中,然后才进行验证。我们可以修改文件后缀名传入木马文件,控制系统。

所以说代码审计就是找到处理某一个功能点以及对相应漏洞过滤的核心代码,找它的逻辑漏洞。

CLTPHP基于thinkphp5框架的文件上传挖掘思路

thinkphp算是MVC思想的具体实现,核心还是MVC这种开发思想。

一般来说,采用MVC开发模式的数据包在请求行中都是这样的:

s=xx m=xx c=xx

或者

/member/uploadFile/upload

都意味着,处理某个功能的核心代码就在 member目录下的uploadFile文件里的upload函数中。

针对这种利用比较完善的开发框架开发出来的系统,除了找它框架本身的漏洞之外,如果程序员在开发过程中,没有按照框架要求来设计过滤代码,也就是写法不规范等等,也有可能产生安全漏洞。

在这个审计学习过程中,对于有框架的,审计找到框架漏洞,那么就会找出很多基于这个框架漏洞了。

在这个过程中学到一些php函数记录一下

strtolower()函数  把字符串全部转化为小写

strtoupper()函数  把字符串全部转化为大写

lcfirst()函数      把字符串首字符转化为小写

ucfirst()函数     把字符串首字符转化为大写

in_array()函数   查找数组中是否有某一个值

in_array(“Kobe”,$arrays [,$strict=true] ) 找到值返回true,否则返回false    $strict可选,为true时还要比较数值类型

str_replace()函数  将字符串中的值换为另一个值,区分大小写

<?php

echo str_replace("world","Peter","Hello world!");

?>

如果不区分大小写,请用 str_ireplace()函数

欢迎各位佬批评指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2291416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2025年02月02日Github流行趋势

项目名称&#xff1a;oumi 项目地址url&#xff1a;https://github.com/oumi-ai/oumi 项目语言&#xff1a;Python 历史star数&#xff1a;1416 今日star数&#xff1a;205 项目维护者&#xff1a;xrdaukar, oelachqar, taenin, wizeng23, kaisopos 项目简介&#xff1a;构建最…

vue入门到实战 三

目录 3.1 v-bind 3.1.1 v-bind指令用法 ​编辑3.1.2 使用v-bind绑定class 3.1.3 使用v-bind绑定style 3.2.1 v-if指令 3.2.1 v-if指令 3.2.2 v-show指令 ​3.3 列表渲染指令v-for 3.3.1 基本用法 3.3.2 数组更新 3.3.3 过滤与排序 3.4 事件处理 3.4.1 使用v-on指令…

实验六 项目二 简易信号发生器的设计与实现 (HEU)

声明&#xff1a;代码部分使用了AI工具 实验六 综合考核 Quartus 18.0 FPGA 5CSXFC6D6F31C6N 1. 实验项目 要求利用硬件描述语言Verilog&#xff08;或VHDL&#xff09;、图形描述方式、IP核&#xff0c;结合数字系统设计方法&#xff0c;在Quartus开发环境下&#xff…

java SSM框架 商城系统源码(含数据库脚本)

商城购物功能&#xff0c;项目代码&#xff0c;mysql脚本&#xff0c;html等静态资源在压缩包里面 注册界面 登陆界面 商城首页 文件列表 shop/.classpath , 1768 shop/.project , 1440 shop/.settings/.jsdtscope , 639 shop/.settings/org.eclipse.core.resources.prefs , …

Unet 改进:在encoder和decoder间加入TransformerBlock

目录 1. TransformerBlock 2. Unet 改进 3. 完整代码 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. TransformerBlock TransformerBlock是Transformer模型架构的基本组件,广泛应用于机器翻译、文本摘要和情感分析等自然语言处理任务…

【Linux系统】信号:认识信号 与 信号的产生

信号快速认识 1、生活角度的信号 异步&#xff1a;你是老师正在上课&#xff0c;突然有个电话过来资料到了&#xff0c;你安排小明过去取资料&#xff0c;然后继续上课&#xff0c;则小明取资料这个过程就是异步的 同步&#xff1a;小明取快递&#xff0c;你停下等待小明回来再…

一、html笔记

(一)前端概述 1、定义 前端是Web应用程序的前台部分,运行在PC端、移动端等浏览器上,展现给用户浏览的网页。通过HTML、CSS、JavaScript等技术实现,是用户能够直接看到和操作的界面部分。上网就是下载html文档,浏览器是一个解释器,运行从服务器下载的html文件,解析html、…

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…

洛谷 P8724 [蓝桥杯 2020 省 AB3] 限高杆

洛谷题目传送门 题目描述 某市有 n 个路口&#xff0c;有 m 段道路连接这些路口&#xff0c;组成了该市的公路系统。其中一段道路两端一定连接两个不同的路口。道路中间不会穿过路口。 由于各种原因&#xff0c;在一部分道路的中间设置了一些限高杆&#xff0c;有限高杆的路…

虚幻UE5手机安卓Android Studio开发设置2025

一、下载Android Studio历史版本 步骤1&#xff1a;虚幻4.27、5.0、5.1、5.2官方要求Andrd Studio 4.0版本&#xff1b; 5.3、5.4、5.5官方要求的版本为Android Studio Flamingo | 2022.2.1 Patch 2 May 24, 2023 虚幻官网查看对应Andrd Studiob下载版本&#xff1a; https:/…

JavaWeb入门-请求响应(Day3)

(一)请求响应概述 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器就可访问,应用程序的逻辑和数据都存储在服务端(维护方便,响应速度一般) CS架构:Client/ser…

【Rust】18.2. 可辩驳性:模式是否会无法匹配

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 18.2.1. 模式的两种形式 模式有两种形式&#xff1a; 可辩驳的&#xff08;可失败的&…

【SLAM】于AutoDL云上GPU运行GCNv2_SLAM的记录

配置GCNv2_SLAM所需环境并实现AutoDL云端运行项目的全过程记录。 1. 引子 前几天写了一篇在本地虚拟机里面CPU运行GCNv2_SLAM项目的博客&#xff1a;链接&#xff0c;关于GCNv2_SLAM项目相关的介绍请移步此文章&#xff0c;本文不再重复说明。 GCNv2: Efficient Corresponde…

【自然语言处理(NLP)】基于Transformer架构的预训练语言模型:BERT 训练之数据集处理、训练代码实现

文章目录 介绍BERT 训练之数据集处理BERT 原理及模型代码实现数据集处理导包加载数据生成下一句预测任务的数据从段落中获取nsp数据生成遮蔽语言模型任务的数据从token中获取mlm数据将文本转换为预训练数据集创建Dataset加载WikiText-2数据集 BERT 训练代码实现导包加载数据构建…

41【文件名的编码规则】

我们在学习的过程中&#xff0c;写出数据或读取数据时需要考虑编码类型 火山采用&#xff1a;UTF-16 易语言采用&#xff1a;GBK php采用&#xff1a;UTF-8 那么我们写出的文件名应该是何种编码的&#xff1f;比如火山程序向本地写出一个“测试.txt”&#xff0c;理论上这个“测…

使用MATLAB进行雷达数据采集可视化

本文使用轮趣科技N10雷达&#xff0c;需要源码可在后台私信或者资源自取 1. 项目概述 本项目旨在通过 MATLAB 读取 N10 激光雷达 的数据&#xff0c;并进行 实时 3D 点云可视化。数据通过 串口 传输&#xff0c;并经过解析后转换为 三维坐标点&#xff0c;最终使用 pcplayer 进…

沙皮狗为什么禁养?

各位铲屎官们&#xff0c;今天咱们来聊聊一个比较敏感的话题&#xff1a;沙皮狗为什么会被禁养&#xff1f;很多人对沙皮狗情有独钟&#xff0c;但有些地方却明确禁止饲养这种犬种&#xff0c;这背后到底是什么原因呢&#xff1f;别急&#xff0c;今天就来给大家好好揭秘&#…

Dest1ny漏洞库:用友 U8 Cloud ReleaseRepMngAction SQL 注入漏洞(CNVD-2024-33023)

大家好&#xff0c;今天是Dest1ny漏洞库的专题&#xff01;&#xff01; 会时不时发送新的漏洞资讯&#xff01;&#xff01; 大家多多关注&#xff0c;多多点赞&#xff01;&#xff01;&#xff01; 0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP&#xff0c;主要聚…

DeepSeek-R1模型1.5b、7b、8b、14b、32b、70b和671b有啥区别?

deepseek-r1的1.5b、7b、8b、14b、32b、70b和671b有啥区别&#xff1f;码笔记mabiji.com分享&#xff1a;1.5B、7B、8B、14B、32B、70B是蒸馏后的小模型&#xff0c;671B是基础大模型&#xff0c;它们的区别主要体现在参数规模、模型容量、性能表现、准确性、训练成本、推理成本…

#define,源文件与头文件,赋值表达式

1.#define 1.1定义 #define 是一个预处理指令&#xff0c;用于定义宏 宏&#xff0c;是预处理阶段&#xff08;在编译之前&#xff09;由预处理器处理的代码片段 1.2使用 1.2.1 #define 可以定义常量 #define PI 3.14159 1.2.2 #define 可以定义宏函数 #define SQUARE(x) ((…