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

CTF中可能遇到的php函数

ctf中常见的PHP函数及特性

preg_match()

主要作用是检查一个字符串是否与给定的正则表达式模式匹配。

如果匹配成功,返回 1。

如果没有匹配,返回 0。

如果发生错误,返回 false。

当检测的变量是数组的时候会报错并返回0。

intval($var,$base)

其中var必填,base可选,base表示转换的基数。可以是从 2 到 36 之间的任何整数。默认值是 10,表示将字符串视为十进制数。若为0,则根据var开始的数字决定使用的进制。如果$var是一个非数字的字符串,intval() 会从字符串的开头开始解析数字,直到遇到非数字字符

该函数当传入的变量也是数组的时候,会返回1

该函数遇到不可

strpos(string $haystack, mixed $needle,)

用于查找一个字符串在另一个字符串中第一次出现的位置。

如果找到 $needle,返回第一次出现的位置(以 0 开始的索引)。

如果未找到 $needle,返回 false。

注意:如果 $needle 出现在 $haystack 的起始位置(位置 0),则返回 0(false 和 0 在 PHP 中有不同的含义)。

payload:?c=eval(next(reset(get_defined_vars())));&pay=;system("tac%20flag.php");

get_defined_vars():

该函数返回当前作用域中所有已定义的变量(包括全局变量和局部变量),以关联数组的形式返回。

例如,它可能返回类似这样的数组:['var1' => 1, 'var2' => 'string']。

reset():

reset() 是一个 PHP 函数,用于将数组的内部指针重置到数组的第一个元素。简单来说,它让指针指向数组的第一个元素。

如果给定一个数组,它会返回第一个元素;如果没有数组,默认情况下是返回 false。

next():

next() 函数用来将数组的内部指针移动到下一个元素,并返回该元素的值。如果没有下一个元素,则返回 false。

在这里,它是与 reset() 一起使用的,意图可能是移动到数组的下一个位置。

file_put_contents($a, $b)

$a 的内容写入到文件 $b 指定的路径中。如果文件不存在,则会创建该文件;如果文件已存在,则会覆盖原有内容。

call_user_func($a,$b)

函数调用函数 $a,并将字符串 $b 作为参数传递给它。$a 应该是一个有效的函数名,且这个函数应该接受一个参数,并返回一个值

hex2bin()

将十六进制字符串转换为二进制字符串。

$hex = "48656c6c6f"; // "Hello" 的十六进制表示
$binary = hex2bin($hex);
echo $binary; // 输出: Hello

bin2hex()

将二进制字符串转换成十六进制字符串

$binary = "Hello"; // 原始字符串
$hex = bin2hex($binary);
echo $hex; // 输出: 48656c6c6f

scandir()

扫描路径下有哪些文件,并以数组的形式传递值

var_dump()

可以输出数组

print_r()

可以输出数组

var_export()

可以输出数组

exit(0)

可以让后面的代码不执行

ob_flush()、ob_end_flush()

将当前输出缓冲区的内容发送到浏览器

ereg($a,$b)

$a是要匹配的正则表达式模式。

$b是要搜索的字符串。匹配成功返回true,失败返回fales。

该函数存在NULL 截断漏洞,导致了正则过滤被绕过,所以可以使用%00截断正则匹配

FilesystemIterator

内置类,可以用来遍历目录,需要一个路径参数

getcwd

可以返回当前工作路径且不需要参数

GLOBALS

主要用于存储和访问所有全局变量,可以通过输出该变量查看所有变量的值

trim()

是 PHP 中用于去除字符串两端空白字符的内置函数。它可以帮助清理字符串,特别是在处理用户输入时,去掉多余的空格或其他指定字符。

trim()函数会去掉变量里的%0a %0b %0d %20 %09 这里只有%0c可用(换页符)

GET、POST

在php中变量名只有数字字母下划线,被get或者post传入的变量名,如果含有空格、+、[则会被转化为_, 但php中有个特性就是如果传入[,它被转化为_之后,后面的字符就会被保留下来不会被替换 。

get_defined_vars()

这个函数返回当前作用域内定义的所有变量的关联数组。数组的键是变量名,值是变量的值.

var_export()

这个函数用于导出一个变量的可读表示。与 print_r() 类似,var_export() 输出的是一个有效的 PHP 代码片段,可以直接在 PHP 代码中使用。var_export(get_defined_vars())会输出当前作用域内所有变量的名称和它们的值

call_user_func($a,$b)

其中$a需要是一个有效的函数名或可调用对象方法

将$b的值作为参数传递给$a,执行$a函数,并返回结果。

也可以没有$b,直接调用$a函数并返回结果

_()

即 gettext() 函数,可以将参数翻译成指定语言,一般就是原封不动的输出参数


http://www.mrgr.cn/news/78746.html

相关文章:

  • 前端热门面试题目[一](HTML、CSS、Javascript、Node、Vue、React)
  • float globalMapVIsualizationLeafSize; 的中文意思是什么
  • 如何让控件始终处于父容器的居中位置(父容器可任意改变大小)
  • 【Maven】依赖冲突如何解决?
  • UE5 打包报错 Unknown structure 的解决方法
  • PyTorch介绍
  • 数据分析自动化工具对比指南Cursor Composer和Google Data Science Agent
  • Hadoop批量计算实验
  • spring知识点复习--针对面试的
  • 计算机基础 原码反码补码问题
  • sizeof和strlen区分,(好多例子)
  • 【Python中while循环】
  • Python的字符串编码
  • 二十一、QT C++
  • 从扩散模型开始的生成模型范式演变--SDE(1)
  • 异步处理优化:多线程线程池与消息队列的选择与应用
  • java面试复习
  • MATLAB期末复习笔记(上)
  • 网络地址转换
  • 阿里云服务器(centos7.6)部署前后端分离项目(MAC环境)
  • winScp连接Ubantu系统,访问拒绝的解决方式
  • 【超全总结】深度学习分割模型的损失函数类别及应用场景
  • 小米澎湃OS2跟蜂窝网络相关的设置和调试【功能设计】
  • HTTP 探秘之旅:从入门到未来
  • 泛化调用 :在没有接口的情况下进行RPC调用
  • rocketmq windows环境部署