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",开启了自动全局变量即时编译功能。
相关推荐
s_fox_24 分钟前
Nginx Embedded Variables 嵌入式变量解析(4)
java·网络·nginx
Jelena1577958579230 分钟前
使用Java爬虫获取1688 item_get_company 接口的公司档案信息
java·开发语言·爬虫
数据小小爬虫33 分钟前
Jsoup解析商品详情时,如何确保数据准确性?
java·爬虫
V+zmm1013443 分钟前
自驾游拼团小程序的设计与实现(ssm论文源码调试讲解)
java·数据库·微信小程序·小程序·毕业设计
坚定信念,勇往无前1 小时前
springboot单机支持1w并发,需要做哪些优化
java·spring boot·后端
丁总学Java1 小时前
`AdminAdminDTO` 和 `userSession` 对象中的字段对应起来的表格
java
一只哒布刘1 小时前
第六次作业
开发语言·php
寰宇软件2 小时前
PHP房屋出租出售高效预约系统小程序源码
前端·小程序·uni-app·vue·php
HUNAG-DA-PAO2 小时前
Redis存在线程安全吗?为什么?
redis·安全·php
陈无左耳、2 小时前
HarmonyOS学习第2天: 解锁语言与框架的无限可能
学习·华为·harmonyos