安全面试4

文章目录

  • 给的源码是ThinkPHP框架的话,审计起来和没有使用框架的有什么不同,从流程上或者从关注的点上有什么不同
    • 框架代码审计的流程
    • 无框架代码审计的流程
  • 反序列的时候,unserialize()反序列一个字符串的时候,对象会有一些魔术方法会被自动调用到,在找反序列化的链时,有哪些魔术方法是可以作为一个入手点去找的
  • 如果用白名单策略修复ssrf,从用户输入的变量里拿出要访问的目标,这个要注意哪些,因为一些url会通过特殊的字符做白名单绕过,对取变量这个操作有哪些要注意的细节?
  • php中三个等号和两个等号有什么区别
  • php代码常见入口函数怎么找
    • 超全局变量
    • 输入处理函数
    • 数据库操作函数
    • 文件操作函数
  • PHP的变量覆盖
  • 有一个php的程序,本身就允许文件包含的操作,同时想要避免文件包含漏洞,写代码的时候要注意哪些
  • 远程文件包含和本地文件包含,这两种涉及的php设置有什么
    • 远程文件包含(RFI)
  • 本地文件包含能不能通过php配置限制文件包含的路径(不通过代码直接通过配置项来解决)

给的源码是ThinkPHP框架的话,审计起来和没有使用框架的有什么不同,从流程上或者从关注的点上有什么不同

框架代码审计的流程

  1. 框架熟悉:首先需要熟悉ThinkPHP的目录结构、配置文件、路由机制、模型-视图-控制器(MVC)架构等。例如,ThinkPHP的配置文件加载顺序为惯例配置->应用配置->模块配置->动态配置
  2. 漏洞复现:针对ThinkPHP的历史漏洞(如SQL注入、反序列化漏洞等)进行复现和分析,了解其成因和利用方式
  3. 工具辅助:使用自动化工具(如Seay源码审计系统、PHPStorm)进行初步扫描,结合手动审计验证结果

无框架代码审计的流程

  1. 代码结构分析:需要手动分析代码的目录结构和逻辑,因为没有框架的约束,代码可能分散且不规范。
  2. 手动审计为主:由于缺乏框架的规范性,自动化工具的效果有限,更多依赖手动审计。

反序列的时候,unserialize()反序列一个字符串的时候,对象会有一些魔术方法会被自动调用到,在找反序列化的链时,有哪些魔术方法是可以作为一个入手点去找的

  1. __wakeup():在unserialize()反序列化对象时自动调用。
  2. __destruct():在对象被销毁时自动调用(如脚本执行结束或手动调用unset())。
  3. __toString():当对象被当作字符串使用时自动调用(如echo、print、字符串拼接等)。
  4. __call():当调用对象中不存在的方法时自动调用。
  5. __get():当访问对象中不存在的属性时自动调用。
  6. __set():当给对象中不存在的属性赋值时自动调用。
  7. __invoke():当尝试将对象作为函数调用时自动调用。

如果用白名单策略修复ssrf,从用户输入的变量里拿出要访问的目标,这个要注意哪些,因为一些url会通过特殊的字符做白名单绕过,对取变量这个操作有哪些要注意的细节?

  1. 检查协议:只允许http和https协议,禁止file://、gopher://、dict://等危险协议。
  2. 检查域名或IP:使用正则表达式或白名单列表验证域名或IP是否合法。
  3. 处理编码问题:对URL进行解码(如urldecode()),确保特殊字符(如%2f、%252f)不会绕过白名单。
  4. 检查路径和参数:确保路径和参数不包含恶意内容(如…/、@、#等)。
  5. 处理重定向:禁止或限制URL重定向,防止攻击者通过重定向绕过白名单。
  6. 解析URL:使用parse_url()函数解析URL,确保提取的域名、路径和参数是规范的。

php中三个等号和两个等号有什么区别

  1. ==:比较两个值是否相等,但在比较之前会进行类型转换(弱类型)
  2. ===:比较两个值是否相等,且类型必须相同。

php代码常见入口函数怎么找

超全局变量

  1. $_GET:获取URL参数。
  2. $_POST:获取POST请求体中的数据。
  3. R E Q U E S T :获取 _REQUEST:获取 REQUEST:获取_GET、 P O S T 和 _POST和 POST_COOKIE的合并数据。
  4. $_COOKIE:获取客户端发送的Cookie。
  5. $_FILES:获取上传的文件。
  6. $_SERVER:获取服务器和执行环境信息。

输入处理函数

  1. file_get_contents():读取文件或URL内容。
  2. fopen():打开文件或URL。
  3. include / require:包含文件。
  4. eval():执行字符串中的PHP代码。
  5. system() / exec() / passthru():执行系统命令。
  6. unserialize():反序列化数据。

数据库操作函数

  1. mysqli_query() / mysqli_prepare():执行SQL查询。
  2. PDO::query() / PDO::prepare():执行SQL查询。

文件操作函数

  1. file_put_contents():写入文件。
  2. move_uploaded_file():处理上传的文件。

PHP的变量覆盖

  1. 通过extract()函数:将数组中的键值对导入当前符号表,键作为变量名,值作为变量值。
  2. parse_str()函数:将查询字符串解析为变量。
  3. 通过$$可变变量:通过变量的值作为变量名来访问或修改变量。
  4. 通过import_request_variables()函数:将GET、POST、Cookie等请求变量导入全局作用域。

有一个php的程序,本身就允许文件包含的操作,同时想要避免文件包含漏洞,写代码的时候要注意哪些

  1. 限制包含的文件范围:只允许包含预定义的文件。
  2. 检查文件路径:确保文件路径在允许的目录范围内。
  3. 禁用远程文件包含,配置PHP:在php.ini中禁用allow_url_include和allow_url_fopen。
  4. 避免直接包含用户输入:使用安全的封装函数。
  5. 移除特殊字符:过滤用户输入中的…/、%00等危险字符。
  6. 避免相对路径:使用绝对路径包含文件,减少路径遍历的风险。

远程文件包含和本地文件包含,这两种涉及的php设置有什么

远程文件包含(RFI)

  1. allow_url_fopen:
    允许PHP通过URL(如http://、ftp://)打开文件。
  2. allow_url_include:允许PHP通过URL包含文件
    本地文件包含(LFI)
  3. open_basedir:限制PHP脚本可以访问的文件目录。
  4. disable_functions:禁用某些危险函数(如exec、system)。

本地文件包含能不能通过php配置限制文件包含的路径(不通过代码直接通过配置项来解决)

  1. open_basedir:限制文件访问路径:open_basedir用于限制PHP脚本可以访问的文件系统路径。所有文件操作(包括文件包含)都会被限制在指定的目录及其子目录中。
  2. disable_functions:禁用危险函数:disable_functions用于禁用某些可能被滥用的PHP函数(如exec、system等),从而减少攻击者通过LFI执行系统命令的风险。
  3. doc_root:设置文档根目录:doc_root用于指定PHP脚本的根目录。所有文件操作(包括文件包含)都会被限制在该目录下。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux基本指令(三)+ 权限

文章目录 基本指令grep打包和压缩zip/unzipLinux和windows压缩包互传tar(重要)Linux和Linux压缩包互传 bcuname -r常用的热键关机外壳程序 知识点打包和压缩 Linux中的权限用户权限 基本指令 grep 1. grep可以过滤文本行 done用于标记循环的结束&#x…

C语言番外篇(3)------------>break、continue

看到我的封面图的时候,部分读者可能认为这和编程有什么关系呢? 实际上这个三个人指的是本篇文章有三个部分组成。 在之前的博客中我们提及到了while循环和for循环,在这里面我们学习了它们的基本语法。今天我们要提及的是关于while循环和for…

开源嵌入式实时操作系统uC/OS-II介绍

一、uC/OS-II的诞生:从开源实验到行业标杆 背景与起源 uC/OS-II(Micro-Controller Operating System Version II)诞生于1992年,由嵌入式系统先驱Jean J. Labrosse开发。其前身uC/OS(1991年)最初作为教学工…

PH热榜 | 2025-02-23

1. NYX 标语:你智能化的营销助手,助你提升业绩。 介绍:NYX的人工智能助手简化了从头到尾的广告活动管理,帮助你轻松创建高转化率的广告,启动多渠道营销活动,并通过实时分析来优化表现。它还可以整合主要的…

设备唯一ID获取,支持安卓/iOS/鸿蒙Next(uni-device-id)UTS插件

设备唯一ID获取 支持安卓/iOS/鸿蒙(uni-device-id)UTS插件 介绍 获取设备唯一ID、设备唯一标识,支持安卓(AndroidId/OAID/IMEI/MEID/MacAddress/Serial/UUID/设备基础信息),iOS(Identifier/UUID),鸿蒙&am…

libwebsockets交叉编译全流程

libwebsocket中的webscoket加密功能需要依赖于Openssl库因此需要提前准备好openssl开源库。 交叉编译openssl 下面演示源码方式交叉编译OpenSSL为动态库。 创建个Websocket文件夹,把后续的成果物均放在这个文件中,文件夹中创建子文件夹OpenSSL和libWeb…

图片爬取案例

修改前的代码 但是总显示“失败” 原因是 修改之后的代码 import requests import os from urllib.parse import unquote# 原始URL url https://cn.bing.com/images/search?viewdetailV2&ccidTnImuvQ0&id5AE65CE4BE05EE7A79A73EEFA37578E87AE19421&thidOIP.TnI…

MAC快速本地部署Deepseek (win也可以)

MAC快速本地部署Deepseek (win也可以) 下载安装ollama 地址: https://ollama.com/ Ollama 是一个开源的大型语言模型(LLM)本地运行框架,旨在简化大模型的部署和管理流程,使开发者、研究人员及爱好者能够高效地在本地环境中实验和…

游戏引擎学习第119天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上一集回顾和今天的议程 如果你们还记得昨天的进展,我们刚刚完成了优化工作,目标是让某个程序能够尽可能快速地运行。我觉得现在可以说它已经快速运行了。虽然可能还没有达到最快的速度,但我们…

deepseek清华大学第二版 如何获取 DeepSeek如何赋能职场应用 PDF文档 电子档(附下载)

deepseek清华大学第二版 DeepSeek如何赋能职场 pdf文件完整版下载 https://pan.baidu.com/s/1aQcNS8UleMldcoH0Jc6C6A?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/3ee62050a2ac

树形DP(树形背包+换根DP)

树形DP 没有上司的舞会 家常便饭了&#xff0c;写了好几遍&#xff0c;没啥好说的&#xff0c;正常独立集问题。 int head[B]; int cnt; struct node {int v,nxt; }e[B<<1]; void modify(int u,int v) {e[cnt].nxthead[u];e[cnt].vv;head[u]cnt; } int a[B]; int f[B]…

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中&#xff0c;有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统&#xff0c;能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…

紫光同创开发板使用教程(二):sbit文件下载

sbit文件相当于zynq里面的bit文件&#xff0c;紫光的fpga工程编译完成后会自动生成sbit文件&#xff0c;因工程编译比较简单&#xff0c;这里不在讲解工程编译&#xff0c;所以我这里直接下载sbit文件。 1.工程编译完成后&#xff0c;可以看到Flow列表里面没有报错&#xff0c…

完美解决:.vmx 配置文件是由 VMware 产品创建,但该产品与此版 VMware Workstation 不兼容

参考文章&#xff1a;该产品与此版 VMware Workstation 不兼容&#xff0c;因此无法使用 问题描述 当尝试使用 VMware Workstation 打开别人的虚拟机时&#xff0c;可能会遇到以下报错&#xff1a; 此问题常见于以下场景&#xff1a; 从其他 VMware 版本&#xff08;如 ESX…

QQ登录测试用例报告

QQ登录测试用例思维导图 一、安全性测试用例 1. 加密传输与存储验证 测试场景&#xff1a;输入账号密码并提交登录请求。预期结果&#xff1a;账号密码通过加密传输&#xff08;如HTTPS&#xff09;与存储&#xff08;如哈希加盐&#xff09;&#xff0c;无明文暴露。 2. 二…

Docker内存芭蕾:优雅调整容器内存的极限艺术

title: “&#x1f4be; Docker内存芭蕾&#xff1a;优雅调整容器内存的极限艺术” author: “Cjs” date: “2025-2-23” emoji: “&#x1fa70;&#x1f4a5;&#x1f4ca;” 当你的容器变成内存吸血鬼时… &#x1f680; 完美内存编排示范 &#x1f4dc; 智能内存管家脚本…

计算机毕业设计SpringBoot+Vue.jst网上购物商城系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

IoT设备硬件攻击技术与接口漏洞利用

IoT设备硬件攻击技术 0x01 总线与接口概述 1.1 UART 概述 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;是一种常见的串行通信协议&#xff0c;广泛用于嵌入式设备中进行调试和数据传输。它通过两根信号线&#xff08;TX和RX&#xff09;实现异…

Windows程序设计29:对话框之间的数据传递

文章目录 前言一、父子对话框之间的数据传递1.父窗口获取子窗口数据2.子窗口获取父窗口数据 二、类外函数调用窗口的操作1.全局变量方式2.参数传递方式 总结 前言 Windows程序设计29&#xff1a;对话框之间的数据传递。 在Windows程序设计28&#xff1a;MFC模态与非模态对话框…

敏捷开发07:敏捷项目可视化管理-ScrumBoard(Scrum板)使用介绍

ScrumBoard(Scrum板)介绍 ScrumBoard&#xff08;Scrum板&#xff09;是敏捷项目管理中使用的可视化工具&#xff0c;用于跟踪和监控冲刺阶段的任务进度。 主要通过可视化的看板来管理工作&#xff0c;它可视化了敏捷开发中的工作流程、任务状态、团队角色。 Scrum 团队在各…