PHP代码审计学习01
目录
两种思路
addslashes函数和magic_quotes_gpc配置:
今天来开php代码审计。
PHP无框架项目SQL注入挖掘技巧。
可以看看小迪老师的学习流程或者说是路线吧。

其中,最下面的代码审计工具推荐用下面两款,fortify,seay。
(fortify收费,seay国产免费)
漏洞产生的根本原因是可控变量和特定函数,其中有的输入输出不存在过滤或者过滤不严谨。
比如说传进去的一个id是一句<script>语句,或是一句sql查询语句,这就是可控变量。在后面跟上echo()函数便可能导致XSS漏洞,跟上mysql_query()函数便可能导致sql注入漏洞。
两种思路
定点挖掘关键字:
这样看来,可控变量和特定函数导致了部分漏洞的产生。那么代码审计的一种挖掘思路其实就是搜索特定的关键字来寻找特定的漏洞。
如:搜索echo print 尝试挖掘的就是xss漏洞。
如:搜索$GET $POST 尝试挖掘的就是其他安全漏洞。
定点挖掘功能点:
比如说要挖掘文件上传漏洞,那么就可以找有文件上传功能的地方。从而找到对应代码段进行分析。
拓展:数据库监控,断点调试也可以挖掘漏洞
数据库监控:

代码审计定点挖掘漏洞一种简单思路:
我们可以选定一种漏洞比如说SQL注入,然后用代码审计工具fortify,seay等打开网站源码,全局搜索sql语句中的关键字,比如说select等,找到与数据库有交互的sql语句和它所在的函数、传值的地方,就可以进行注入了。(联合,报错,堆叠,盲注,二次,宽字节)
addslashes函数和magic_quotes_gpc配置:
addslashes()函数和magic_quotes_gpc(魔术引号) 作用一样,都是起到过滤的作用,(一些比较规范的经典的CMS系统都会自带这种过滤功能)这在《小迪安全》学习笔记05中提到过。
这俩会把以下四个预定义字符前面加上一个反斜杠 \
单引号
双引号
反斜杠“ \ ”
Null
需要区别的是:
addslashes() 是一个php预定义函数,而magic_quotes_gpc只是一个配置开关,可以在php.ini配置文件中更改on/off 或者在脚本中ini_set更改。
需要注意的是magic_quotes_gpc在php5.4版本就已经废弃。
绕过过滤可以用二次注入或者宽字节注入。
// 目前我见到的二次注入可以发生在个人信息注册和后续修改情况。
Sql二次注入发生在insert将恶意代码放进数据库,然后用update等引用恶意代码出来搞怪。
碰到一些更高级的CMS系统会有 转义+关键字过滤,可以考虑二次编码(url等)
因为get传参是可以自动识别url编码的,利用了这么一种或几种特性。
欢迎各位批评指正!
相关文章:
PHP代码审计学习01
目录 两种思路 addslashes函数和magic_quotes_gpc配置: 今天来开php代码审计。 PHP无框架项目SQL注入挖掘技巧。 可以看看小迪老师的学习流程或者说是路线吧。 其中,最下面的代码审计工具推荐用下面两款,fortify,seay。 &…...
《数据思维》之数据可视化_读书笔记
文章目录 系列文章目录前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 数据之道,路漫漫其修远兮,吾将上下而求索。 一、数据可视化 最基础的数据可视化方法就是统计图。一个好的统计图应该满足四个标准:准确、有…...
深度学习常见术语解释
正例与负例: 在分类任务中,通常将目标类别称为正例(positive),非目标类别称为负例(negative)。 True Positives(TP): 被正确地划分为正例的个数,…...
重温STM32之环境安装
缩写 CMSIS:common microcontroller software interface standard 1,keil mdk安装 链接 Keil Product Downloads 安装好后,开始安装平台软件支持包(keil 5后不在默认支持所有的平台软件开发包,需要自行下载&#…...
使用Flask和Pydantic实现参数验证
使用Flask和Pydantic实现参数验证 1 简介 Pydantic是一个用于数据验证和解析的 Python 库,版本2的性能有较大提升,很多框架使用Pydantic做数据校验。 # 官方参考文档 https://docs.pydantic.dev/latest/# Github地址 https://github.com/pydantic/pyd…...
python_在钉钉群@人员发送消息
python_在钉钉群人员发送消息 1、第一种 企业内部机器人群聊实现人接入指南,适用于群机器人接收消息,处理完一系列的动作之后,将消息返回给发消息的人员,同时该人员。 需要在企微后台新建一个自建应用,在自建应用里…...
C语言之装甲车库车辆动态监控辅助记录系统
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 C语言之装甲车库车辆动态监控辅助记录系统 目录 一、前言 1.1 (一)…...
线性代数概述
矩阵与线性代数的关系 矩阵是线性代数的研究对象之一: 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,是线性代数中的核心概念之一。矩阵的定义和性质构成了线性代数中矩阵理论的基础,而矩阵运算则简洁地表示和…...
使用 ChatGPT 生成和改进你的论文
文章目录 零、前言一、操作引导二、 生成段落或文章片段三、重写段落四、扩展内容五、生成大纲内容六、提高清晰度和精准度七、解决特定的写作挑战八、感受 零、前言 我是虚竹哥,目标是带十万人玩转ChatGPT。 ChatGPT 是一个非常有用的工具,可以帮助你…...
Linux命令行工具-使用方法
参考资料 Linux网络命令:网络工具socat详解-CSDN博客 arm-linux-gnueabihf、aarch64-linux-gnu等ARM交叉编译GCC的区别_aarch64-elf-gcc aarch64-linux-gnu-CSDN博客 解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云 热爱学习地派大星-CS…...
RV1126+FFMPEG推流项目(7)AI音频模块编码流程
一、AI 模块和外设麦克风的关系 AI 模块是 RV1126 芯片的一个重要组成部分。它的主要功能是将外部接入的麦克风采集到的模拟信号通过内置的驱动程序转换为数字信号。这意味着麦克风作为外设,提供音频输入信号,AI 模块通过其硬件和软件的结合,…...
四、华为交换机 STP
生成树协议(STP)的核心目的是在存在冗余链路的网络中,构建一个无环的拓扑结构,从而防止网络环路带来的广播风暴等问题 一、STP 原理 选举根桥:网络中的每台交换机都会有一个唯一的桥 ID(BID)&am…...
服务器卡顿是否等同于遭受CC攻击?
在网站运营或应用服务过程中,遇到服务器响应缓慢或者卡顿时,很多管理员的第一反应是可能遭遇了CC(Challenge Collapsar)攻击。但实际情况往往更为复杂。本文将探讨服务器卡顿与CC攻击之间的关系,并提供一些基本的排查方…...
【机器学习实战入门】使用Pandas和OpenCV进行颜色检测
Python 颜色检测项目 今天的项目将非常有趣和令人兴奋。我们将与颜色打交道,并在项目过程中学习许多概念。颜色检测对于识别物体来说是必要的,它也被用作各种图像编辑和绘图应用的工具。 什么是颜色检测? 颜色检测是检测任何颜色名称的过程…...
一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建
文章目录 一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建1. 先回忆webpack是个啥2. webpack四大核心2.1 Entry(入口)2.2 Output(输出)2.3 Loader(加载器)2.4 Plugin(插件) 3. 按部就班实现webpack3.1 初始化项目3.2 完成项目骨架搭建3.3 实现webpack构建 一文…...
RabbitMQ基础篇
文章目录 1 RabbitMQ概述1.1 消息队列1.2 RabbitMQ体系结构 2 RabbitMQ工作模式2.1 简单模式(Simple Queue)2.2 工作队列模式(Work Queues)2.3 发布/订阅模式(Publish/Subscribe)2.4 路由模式(R…...
GPT-5 传言:一场正在幕后发生的 AI 变革
新的一年,让我们从一个引人入胜的话题开始:如果我告诉你,GPT-5 并非虚构,而是真实存在呢?它不仅真实存在,而且正在你看不见的地方悄然塑造着世界。我的基本假设是:OpenAI 已经秘密开发出 GPT-5&…...
CSS布局与响应式
学习链接 Grid网格布局 前端五大主流网页布局 flex布局看这一篇就够了 grid布局看这一篇就够了 用六个案例学会响应式布局 伸缩盒响应式页面布局实战 实现响应式布局的五种方式 - csdn 如何完成响应式布局,有几种方法?看这个就够了 响应式布局总…...
C++的auto_ptr智能指针:从诞生到被弃用的历程
C作为一种功能强大的编程语言,为开发者提供了众多便捷的特性和工具,其中智能指针是其重要特性之一。智能指针能够自动管理内存,有效避免内存泄漏等常见问题。然而,并非所有智能指针都尽善尽美,auto_ptr便是其中的一个例…...
iOS - Objective-C 底层实现中的哈希表
1. 关联对象存储(AssociationsHashMap) // 关联对象的哈希表实现 typedef DenseMap<const void *, ObjcAssociation> ObjectAssociationMap; typedef DenseMap<DisguisedPtr<objc_object>, ObjectAssociationMap> AssociationsHashMa…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
