代码审计-Thinkphp框架审计前置知识点

news2024/11/26 12:13:30

代码审计必备知识点:

1、代码审计开始前准备:

环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。

2、代码审计前信息收集:

审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。

3、代码审计挖掘漏洞根本:

可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。

4、代码审计展开计划:

审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。

代码审计两种方法

功能点或关键字分析可能存在的漏洞

   -抓包或搜索关键字找到代码出处及对应文件。

   -追踪过滤或接收的数据函数,寻找触发此函数或代码的地方进行触发测试。

 

   -常规或部分MVC模型源码可以采用关键字的搜索挖掘思路。

   -框架 MVC 墨香源码一般会采用功能点分析抓包追踪挖掘思路。

1.搜索关键字找敏感函数

2.根据目标功能点判断可能存在的漏洞

 

 

常见漏洞关键字:

SQL注入:

select insert update mysql_query mysqli等

文件上传:

$_FILES,type="file",上传,move_uploaded_file()等 

XSS跨站:

print print_r echo sprintf die var_dump var_export等

文件包含:

include include_once require require_once等

代码执行:

eval assert preg_replace  call_user_func  call_user_func_array等

命令执行:

system exec shell_exec  ` ` passthru pcntl_exec popen proc_open等

变量覆盖:

extract() parse_str() import_request_variables() $$ 等

反序列化:

serialize() unserialize()  __construct   __destruct等

文件读取:

fopen file_get_contents fread fgets fgetss file  fpassthru parse_ini_file readfile等

文件删除:

unlink() remove()等

文件下载:

download() download_file()等

通用关键字:

$_GET,$_POST,$_REQUEST,$_FILES,$_SERVER等

 

Thinkphp框架介绍

使用thinkphp框架的源码审计思路:

1.使用源码查看工具打开源码,全局搜索thinkphp确认源码是否使用thinkphp框架

2.源码如果没有按照thinkphp框架的代码规则来写,则不会触发thinkphp框架的过滤规则。按照常规思路测试即可

3.源码如果是按照thinkphp框架的代码规则来写的,则全局搜索THINK_VERSION确认框架版本信息,根据版本漏洞来测试。否则相当于在测试框架的0day。

入口文件查找:

使用phpstorm全局搜索APP_PATH确认入口文件

开启Thinkphp框架的调试开关:

打开入口文件指定的应用目录,找到config.php配置文件将app_debug和app_trace的状态更改为true。

在找到database.php数据库配置文件将debug的状态更改为true。

打开网站,右下角就会生成一个调试按钮:

打开即可查看调试信息:

案例演示:Thinkphp框架访问规则演示

ThinkPHP 5.0 在没有启用路由的情况下典型的URL访问规则是:http://域名/index.php(或其他应用入口文件)/模块/控制器/操作/参数名/参数值

访问方法:

规则其实就是:入口文件/目录/类名/方法名

访问方法并且传递参数:

访问规则其实就是:入口文件/目录/类名/方法名/参数名/参数值

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

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

相关文章

接口测试实战,Jmeter正则提取响应数据-详细整理,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 在测试时&#xf…

Linux 编译CEF源码详细记录

Linux CEF(Chromium Embedded Framework)源码下载编译 背景 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 Windows平台参考&#…

营收、净利同比微增,喜临门品牌升级“临门一脚”?

8月8日晚,喜临门发布2023上半年业绩报告。根据财报,2023年上半年,喜临门营业收入约38.05亿元,同比增加5.53%;归属于上市公司股东的净利润约2.22亿元,同比增加1.2%。 如果仅从这份财报看,喜临门…

高忆管理:“T+0”或带来市场波动

据了解,各地区对日内“T0”买卖,制定了不同的约束和监督办法。如美国不同账户类型监管、日本的特别涨跌停准则和日内单次“T0”、印度组织投资者禁入和特别保证金准则、中国台湾从信用账户到现股账户逐渐放开“T0”准则等。 上海高忆私募基金&#xff08…

软件的帮助文档应该怎么做?

在当今数字化时代,软件已经成为我们生活和工作中不可或缺的一部分。然而,对于用户来说,使用新的软件可能会面临一些挑战。这时,一个好的软件帮助文档就显得尤为重要了。软件帮助文档是一种向用户提供指导、解答问题和提供支的文件…

图像单幅或多幅展示(OPENCV-python)

# -*- coding: utf-8 -*- import cv2print("---------------------------------单幅图像读取-----------------------------") # 打印opencv版本 print(cv2.version.opencv_version) # 图像读取 img cv2.imread(Figure_1.png) if img is None:print(Image read erro…

保姆级Arcgis安装图文安装教程

参考视频:【钟老师arcGIS从放弃到入门】02软件下载与安装_哔哩哔哩_bilibili 安装包在视频简介中有 注释:安装过程中有犯错误,请耐心看完一遍再跟着操作 (一)安装包下载 下载视频中分享的压缩包(压缩包密码&#x…

【UE4 RTS】07-Camera Boundaries

前言 本篇实现的效果是当CameraPawn移动到地图边缘时会被阻挡。 效果 步骤 1. 打开项目设置,在“引擎-碰撞”中,点击“新建Object通道” 新建通道命名为“MapBoundaries”,然后点击接受 2. 向视口中添加 阻挡体积 调整阻挡体积的缩放 向四…

【巧妙继承】C++玩转继承的神级技巧

本篇目录 什么是继承?继承的格式继承关系和访问限定符继承父类成员访问方式的变化基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数构造函数拷贝构造赋值重载析构函数 继承与友元继承与静态成员多继承与菱形继承虚拟继承菱形虚拟继承的实现原理 继承和组…

DPMFoam给粒子添加周期性边界条件

问题引入 DPMFoam是OpenFOAM中的一个颗粒两相流求解器,在流体的运算中,我们经常采用周期性边界条件,在OpenFOAM中即为cyclic,那么对于颗粒,能否在边界也设置成周期性边界呢,在CFDEM中是可以的,…

使用C#加载TOOLBLOCK

前言 因为Vpp文件类型包含了以下三种 QuickBuidJobToolBlock 不同类型的打开方式不同,需要提前知道vpp是什么类型 例如 这个TB.vpp文件是TOOLBLOCK,就不能直接在visionpro中打开(直接打开需要QuickBuid文件), 可以…

明道云联合EMQ基于IIoT场景技术白皮书

背景介绍 智能物联网设备在IIoT场景中有着广泛的应用,但如何管理和监控这些设备是一个挑战。为了解决这个问题,用户首先需要采集各项设备基础数据,然后在此基础上通过业务系统管理设备。 EMQ作为数据链接底座,可提供高可靠、高性…

ROS入门-第 1 章 ROS概述与环境搭建

目录 第 1 章 ROS概述与环境搭建 1.1 ROS简介 1.1.1 ROS概念 1.1.2 ROS设计目标 1.1.3 ROS发展历程 1.3 ROS快速体验 1.3.1 HelloWorld实现简介 1.3.2 HelloWorld(C版) 步骤 1:创建工作空间 步骤 2:创建发布者节点 步骤…

python——案例16:约瑟夫生者死者链队列

约瑟夫游戏的大意是:一条船上有30个人,因为在海上遇到风暴 因此船长告诉乘客,必须牺牲15个人,并议定30个人围成一圈, 由第一个人数起,依次报数,数到第9人,便把他投入大海中&#xff…

Multimap用法详解

Multimap Multimap 是 Google 的 Guava 库为 Java 引入的一种新集合类型&#xff0c;它允许将多个值存储在单个键下。它被设计为一种替代 Map<K, List> 或 Map<K, Set>&#xff08;JDK 标准集合框架&#xff09;的方案。 Multimap<K, V> 扩展了 AbstractMul…

性能测试基础了解

什么是线程&#xff1f; 线程是程序中的一个执行流&#xff0c;每个线程都有自己的专有寄存器(栈指针、程序计数器等)&#xff0c;但代码区是共享的&#xff0c;即不同的线程可以执行同样的函数。 一般在性能测试过程中&#xff0c;我们认为一个线程就是一个虚拟用户。 什么…

【CSS】背景图定位问题适配不同机型

需求 如图, 实现一个带有飘带的渐变背景 其中头像必须显示飘带凹下去那里 , 需要适配不同的机型, 一不下心容易错位 实现 因为飘带背景是版本迭代中更新的, 所以飘带和渐变背景实则两个div 飘带切图如下 , 圆形部分需要契合头像 <view class"box-bg"><…

json-server的入门

由于前端开发的时候&#xff0c;需要向后端请求数据&#xff0c;有的时候后端还没有准备好&#xff0c;所以需要使用一些简单的静态数据&#xff0c;但是我们更加希望能够模拟请求以及请求回来的过程&#xff0c;这个时候就需要使用json-server Json-Server的介绍 json-server…

从小白到大神之路之学习运维第77天-------Kubernetes集群部署下篇

第四阶段 时 间&#xff1a;2023年8月10日 参加人&#xff1a;全班人员 内 容&#xff1a; Kubernetes集群部署下篇 目录 一、安装flannel 二、安装Dashboard UI &#xff08;一&#xff09;部署Dashboard &#xff08;二&#xff09;开放端口设置 &#xff08;三&a…

课程管理系统springboot学生教师教务java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 课程管理系统springboot 软件架构&#xff1a;Spring…