当前位置: 首页 > article >正文

CTF 代码学习日记 PHP

基础

2字符串连接可以使用点号(.

3.$_:在 PHP 中,以$_开头的变量(如$_GET$_POST$_COOKIE等)是超级全局变量。超级全局变量的特点是它们在 PHP 脚本的任何地方(包括函数内部、类内部等)都可以访问,不需要使用global关键字来声明其可访问性。这些变量主要用于获取来自不同数据源的用户输入或者服务器环境相关信息。

例如:$_SERVER

  • 用途:包含了服务器和执行环境相关的信息。例如,$_SERVER['SERVER_NAME']可以获取服务器的名称,$_SERVER['REQUEST_METHOD']可以获取当前请求的方法(如 GET、POST 等),$_SERVER['REMOTE_ADDR']可以获取客户端(用户)的 IP 地址。

          $_GET:从GET变量中获取name和age的值

$name = $_GET['name'];
$age = $_GET['age'];

         $_POST : 使用下面语句来获取利用POST方法提交的表单数据

$username = $_POST['username'];
$password = $_POST['password'];

4.@的用法:

错误抑制运算符

在 PHP 中,@是错误抑制运算符。它用于抑制表达式可能产生的错误信息。当在一个表达式之前放置@时,PHP 会隐藏这个表达式执行过程中产生的大多数错误信息(包括警告、通知和错误),使得脚本能够继续执行,而不会因为这些错误而中断。

使用场景

当调用一个可能会产生错误的函数时,也可以使用@来抑制错误。比如,在使用mysql_connect(旧的 MySQL 函数,不推荐使用,但用于示例)连接数据库时,如果数据库服务器不可用或者连接参数错误,会产生错误信息。

<?php
$conn = @mysql_connect("wrong_host", "user", "password");
if ($conn) {// 连接成功后的操作mysql_close($conn);
} else {// 连接失败后的操作,没有显示错误信息echo "数据库连接失败。";
}
?>

这里使用@抑制了mysql_connect函数可能产生的错误信息,同样可以通过检查$conn的值来判断连接是否成功,然后进行后续操作。

无法抑制所有错误@并不能抑制所有类型的错误。例如,语法错误、致命错误(如内存耗尽等)和解析错误等是无法被@抑制的,因为这些错误会导致 PHP 脚本在执行到这些错误点之前就无法正常解析或者运行。

file_put_contents

1.file_put_contents("./upload".$this->filename,$this->content)

实现文件写入,将content内容写入路径为./upload文件名为filename的文件

路径特殊符号

  ./  表示当前目录(相对路径表示方式)-----如果在命令行中执行 ./program.exe,意味着要在当前目录下查找并运行名为 program.exe 的可执行文件。

  ..  表示上级目录(相对路径)-----若当前目录是 /home/user/documents,要访问 documents 的上级目录 user 中的某个文件,可以使用 ../file.txt

  ~  表示当前用户的主目录-----~/.bashrc表示当前用户主目录下的隐藏文件.bashrc。在命令行中,用户可以直接使用~来进入自己的主目录,而不需要输入完整的路径。

关于phpinfo

做题的时候总是要查看phpinfo里头的内容,每次都不知所云,还是整理一下吧

什么叫本地值和主值:

主值就是全局默认的值,一般在php.ini里面设置,如果没有本地值就默认是主值,本地值就只能适用当前的目录或者文件

这里是php的核心配置: 

  • allow_url_fopen:允许使用类似fopen()函数打开 URL 形式的文件路径。
  • allow_url_include:不允许通过includerequire等函数包含远程 URL 文件。
  • arg_separator.input: “&”指定了在 PHP 中解析输入变量时使用的参数分隔符。
  • arg_separator.output:&,用于设置输出变量时的参数分隔符。
  • auto_append_file:这表示每个 PHP 脚本执行结束后,会自动包含名为 “d0g3_f1ag.php” 的文件。【这个用的好像还挺多的】
  • auto_globals_jit:本地值和主值均为 “On”,开启了自动全局变量即时编译功能。

 

 

 

 

相关文章:

CTF 代码学习日记 PHP

基础 2字符串连接可以使用点号&#xff08;.&#xff09; 3.$_&#xff1a;在 PHP 中&#xff0c;以$_开头的变量&#xff08;如$_GET、$_POST、$_COOKIE等&#xff09;是超级全局变量。超级全局变量的特点是它们在 PHP 脚本的任何地方&#xff08;包括函数内部、类内部等&am…...

观察者模式说明(C语言版本)

观察者模式主要是为了实现一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时&#xff0c;会通知所有观察者对象&#xff0c;使它们能够自动更新自己。下面使用C语言实现了一个具体的应用示例&#xff0c;有需要的可以参考…...

【从0做项目】Java搜索引擎(6) 正则表达式鲨疯了优化正文解析

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 文章导读 零&#xff1a;项目结果展示 一&#xff1a;导读&知识点回顾 二&#xff1a;遗留问题 …...

【论文技巧】Mermaid VSCode插件制作流程图保存方法

插流程图快点 利用Mermaid Preview插件自带功能 如果你的VSCode安装了支持导出图片的Mermaid预览插件&#xff08;如 Mermaid Markdown Syntax Highlighting 等&#xff09;&#xff0c;可以按以下步骤进行&#xff1a; 打开Mermaid代码文件&#xff1a;在VSCode中打开包含M…...

【DeepSeek】如何将DeepSeek部署到本地?如何给本地 LLM 提供UI界面?CherryStudio 的使用

注&#xff1a;如果下面的所有操作&#xff0c;需要访问到 Github&#xff0c;可以先看这篇文章&#xff0c;了解如何流畅连接 Github 【Github】如何流畅链接Github.com-CSDN博客 一、下载 Ollama 1、访问网址 Ollama&#xff0c;点击下载 Ollama 到本地 选择自己计算机的系统…...

第1章:LangChain4j的聊天与语言模型

LangChain4J官方文档翻译与解析 目标文档路径: https://docs.langchain4j.dev/tutorials/chat-and-language-models/ 语言模型的两种API类型 LangChain4j支持两种语言模型&#xff08;LLM&#xff09;的API&#xff1a; LanguageModel&#xff1a;这种API非常简单&#xff0c;…...

【小游戏】C++控制台版本俄罗斯轮盘赌

制作团队&#xff1a;洛谷813622&#xff08;Igallta&#xff09; 989571&#xff08;_ayaka_&#xff09; Mod&#xff1a;_ayaka_ 双人模式&#xff1a;Igallta 公告&#xff1a; 原先的9.8改名为 Alpha 1.0&#xff0c;以后每次更新都增加 0.1。 Alpha 1.11 改为 Beta 1…...

【大语言模型_4】源码编译vllm框架cpu版

背景&#xff1a; 通过官方提供的pip install vllm安装的vllm框架不支持cpu加载模型。因此需要本地编译。 系统环境 操作系统&#xff1a;欧拉2203 python版本&#xff1a;3.10 编译步骤 一、安装gcc/g/cmake 1、下载源码&#xff1a;https://github.com/vllm-project/vllm 安…...

mac开发环境配置笔记

1. 终端配置 参考&#xff1a; Mac终端配置笔记-CSDN博客 2. 下载JDK 到 oracle官网 下载jdk: oracle官网 :Java Downloads | Oraclemac的芯片为Intel系列下载 x64版本的jdk&#xff1b;为Apple Mx系列使用 Arm64版本&#xff1b;oracle官网下载时报错&#xff1a;400 Bad R…...

交换机基本命令

目录 一、华为交换机基本命令 1、VRP视图层 2、命令帮助 3、配置设备名称 4、命令等级&#xff08;一般生产过程没有下面的详细&#xff09; 5、用户界面 6、配置Console认证 控制台接口&#xff08;Console&#xff09; 配置步骤示例 7、配置VTY登录&#xff08;本文…...

PLC通信交互系统技术分享

目录 0、前言 1、模块划分 2、状态机 3、通信层增强 4、异常处理机制 5、核心代码 关键状态处理示例 6、部署与测试方案 1. 环境要求 2. 性能测试指标 0、前言 这是一个C程序&#xff0c;用于与西门子PLC进行通信&#xff0c;处理SN码、拍照信号、检测结果等流程。代码…...

PHP图书借阅小程序源码

&#x1f4da; 图书借阅小程序&#xff1a;一键开启智慧阅读新篇章 &#x1f31f; 这是一款由ThinkPHP与UniApp两大技术巨擘强强联手精心打造的图书借阅微信小程序&#xff0c;它犹如一座随身携带的移动图书馆&#xff0c;让您无论身处何地都能轻松畅游知识的海洋。创新的多书…...

本地部署 DeepSeek + Dify,构建自己的AI能力

概述 DeepSeek 是一款开创性的开源大语言模型,凭借其先进的算法架构和反思链能力,为 AI 对话交互带来了革新性的体验。通过私有化部署,你可以充分掌控数据安全和使用安全。你还可以灵活调整部署方案,并实现便捷的自定义系统。 Dify 作为同样开源的 AI 应用开发平台,提供完…...

UE 播放视频

一.UI播放视频 1.导入视频文件至工程文件夹 2.文件夹内右健选择Media -> File Meida Source创建testFileMeidaSource文件。 编辑FilePath为当前视频 3.右键->Media->Media Player 创建testMediaPlayer文件 4.右键创建testMediaTexture。编辑MediaPlayer设置testMedia…...

拦截器VS过滤器:Spring Boot中请求处理的艺术!

目录 一、拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;&#xff1a;都是“守门员”&#xff01;二、如何实现拦截器和过滤器&#xff1f;三、拦截器和过滤器的区别四、执行顺序五、真实的应用场景六、总结 &#x1f31f;如果喜欢作者的讲…...

科普:“Docker Desktop”和“Docker”以及“WSL”

“Docker Desktop”和“Docker”这两个概念既有紧密联系&#xff0c;又存在一定区别&#xff1a; 一、联系 核心功能同源&#xff1a;Docker Desktop 本质上是基于 Docker 核心技术构建的。Docker 是一个用于开发、部署和运行应用程序的开源平台&#xff0c;它利用容器化技术…...

react实例与总结(二)

目录 一、脚手架基础语法(16~17) 1.1、hello react 1.2、组件样式隔离(样式模块化) 1.3、react插件 二、React Router v5 2.1、react-router-dom相关API 2.1.1、内置组件 2.1.1.1、BrowserRouter 2.1.1.2、HashRouter 2.1.1.3、Route 2.1.1.4、Redirect 2.1.1.5、L…...

巧用GitHub的CICD功能免费打包部署前端项目

近年来&#xff0c;随着前端技术的发展&#xff0c;前端项目的构建和打包过程变得越来越复杂&#xff0c;占用的资源也越来越多。我有一台云服务器&#xff0c;原本打算使用Docker进行部署&#xff0c;以简化操作流程。然而&#xff0c;只要执行sudo docker-compose -f deploy/…...

使用 DeepSeek 生成商城流程图

步骤 1.下载 mermaid 2.使用 DeepSeek 生成 mermaid 格式 3.复制内容到 4.保存备用。 结束。...

Unity FBXExport导出的FBX无法在Blender打开

将FBX转换为obj&#xff1a; Convert 3D models online - free and secure...

VSCode自定义快捷键和添加自定义快捷键按键到状态栏

VSCode自定义快捷键和添加自定义快捷键按键到状态栏 &#x1f4c4;在VSCode中想实现快捷键方式执行某些指令操作&#xff0c;可以通过配置组合式的键盘按键映射来实现&#xff0c;另外一种方式就是将执行某些特定的指令嵌入在面板菜单上&#xff0c;在想要执行的时候&#xff0…...

hive迁移补数脚本细粒度 表名-分区唯一键

假设我通过对数脚本发现&#xff0c;这些表对不上。 假设检测出来是这样的&#xff08;这些表存在于源端&#xff0c;但不存在目标端&#xff09; 我们需要从源端迁移过去。 diff.txt ads_xx1 dt20250219 ads_xx2 dt20250217 ads_xx2 dt20250218 ads_xx2 dt20250…...

SpringSecurity基于配置方法控制访问权限:MVC匹配器、Ant匹配器

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。在 Spring Security 中&#xff0c;可以通过配置方法来控制访问权限。认证是实现授权的前提和基础&#xff0c;在执行授权操作前需要明确目标用户&#xff0c;只有明确目标用户才能明确它所具备的角色和权…...

Ubuntu22.04 - gflags的安装和使用

目录 gflags 介绍gflags 安装gflags 使用 gflags 介绍 gflags 是Google 开发的一个开源库&#xff0c;用于 C应用程序中命令行参数的声明、定义和解析。gflags 库提供了一种简单的方式来添加、解析和文档化命令行标志(flags),使得程序可以根据不同的运行时配置进行调整。 它具…...

java | MyBatis-plus映射和golang映射对比

文章目录 Java实体类和数据库的映射1.默认驼峰命名规则2.自定义字段映射3.关闭驼峰命名规则4.JSON序列化映射 Golang1. 结构体与表的映射2. 字段与列的映射3. 关联关系映射4. 其他映射相关标签 这篇也是做数据库映射方面的对比&#xff1a; Java 实体类和数据库的映射 1.默认…...

使用 Redis 实现 RBAC 权限管理

1. 什么是 RBAC&#xff1f; RBAC&#xff08;Role-Based Access Control&#xff0c;基于角色的访问控制&#xff09;是一种常见的权限管理模型&#xff0c;它通过用户&#xff08;User&#xff09;、角色&#xff08;Role&#xff09;、权限&#xff08;Permission&#xff…...

正则表达式–断言

原文地址&#xff1a;正则表达式–断言 – 无敌牛 欢迎参观我的个人博客&#xff1a;正则表达式特殊字符 – 无敌牛 断言assertions 1、(?...)&#xff1a;正向预查&#xff08;positive lookahead&#xff09;&#xff0c;表示某个字符串后面应该跟着什么。但这个字符串本身…...

Python常见面试题的详解14

1. 从变量 A 中匹配 JSON 字符串 在处理文本数据时&#xff0c;有时需要从变量里找出其中的 JSON 字符串。JSON 字符串一般以 { 或 [ 开头&#xff0c;以 } 或 ] 结尾&#xff0c;但简单的正则匹配可能不够严谨&#xff0c;所以还需用 json 模块进行验证。 要点 利用正则表达…...

电脑想安装 Windows 11 需要开启 TPM 2.0 怎么办?

尽管 TPM 2.0 已经内置在许多新电脑中&#xff0c;但很多人并不知道如何激活这一功能&#xff0c;甚至完全忽略了它的存在。其实&#xff0c;只需简单的几步操作&#xff0c;你就能开启这项强大的安全特性&#xff0c;为你的数字生活增添一层坚固的防护屏障。无论你是普通用户还…...

QT之改变鼠标样式

QT改变鼠标图片 资源路径如下 代码实现 QPixmap customCursorPixmap(":/images/mouse.png");QCursor customCursor(customCursorPixmap);QWidget::setCursor(customCursor); // 可以设置为整个窗口或特定控件QWidget::setCursor(); // 设置为透明光标&#xff0c…...