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的值

php 复制代码
$name = $_GET['name'];
$age = $_GET['age'];

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

php 复制代码
$username = $_POST['username'];
$password = $_POST['password'];

4.@的用法:

错误抑制运算符

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

使用场景

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

php 复制代码
<?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",开启了自动全局变量即时编译功能。
相关推荐
独自破碎E5 分钟前
总持续时间可被 60 整除的歌曲
java·开发语言
Python+JAVA+大数据9 分钟前
TCP_IP协议栈深度解析
java·网络·python·网络协议·tcp/ip·计算机网络·三次握手
丶小鱼丶9 分钟前
Java基础之【多线程】
java
云游云记30 分钟前
PHP 汉字转拼音扩展包:overtrue/pinyin 全面指南
php·overtrue/pinyin
东东51640 分钟前
基于vue的电商购物网站vue +ssm
java·前端·javascript·vue.js·毕业设计·毕设
她说..1 小时前
策略模式+工厂模式实现审批流(面试问答版)
java·后端·spring·面试·springboot·策略模式·javaee
鹿角片ljp1 小时前
力扣9.回文数-转字符双指针和反转数字
java·数据结构·算法
skywalker_111 小时前
网络编程篇
java·网络协议·网络编程
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 基于Java的九价疫苗预约系统为例,包含答辩的问题和答案
java·开发语言
闵帆1 小时前
反演学习器面临的鸿沟
人工智能·学习·机器学习