)
php中的一些比较有意思的函数(2)extract函数extract函数用于将关联数组中的键名直接转换为当前的变量键值则对应变量的值并返回成功设置的变量数目语法extract(array,EXTR_OVERWRITE/EXTR_SKIP/EXTR_PREFIX_SAME/EXTR_PREFIX_ALL,num)(可选参数) (可选参数)常用参数 (Flags)EXTR_OVERWRITE默认值如果有冲突覆盖已有的变量。EXTR_SKIP如果有冲突不覆盖已有的变量。EXTR_PREFIX_SAME冲突时给变量名加上前缀。EXTR_PREFIX_ALL给所有变量名加上前缀。extract函数变量覆盖问题使用extract函数让_GET()函数传入的多个值覆盖文件中多个相同变量的值以实现覆盖绕过parse_str函数parse_str()用来把类似 URL 查询的字符串如nameJohnage30或arr[a]xxxarr[b]xxx解析成数组或变量语法parse_str(string,第二参数变量)string: 需要解析的输入字符串。第二参数变量: 必需的第二个参数传引用用来存储解析后的键值对数组parse_str函数变量覆盖问题利用parse_str()将_GET或_POST方法传入的查询字段转换成数组的形式再利用extract()函数将文件中的相关变量值替换为数组中的同名变量值进行绕过$变量覆盖绕过问题利用php语言的特性使用多个$符设置多层变量来绕过使得程序正常执行内置类-Exception类相关问题(可以实现RCE)Exception类函数Exception类是所有用户代码异常的基类主要包含getMessage、getFile和getLine等核心方法。语法try{函数体}catch(Exception 捕获异常的一个随便变量名){函数体}核心方法getMessage()获取异常信息内容。getCode()获取异常代码数字。getFile()获取发生异常的文件名。getLine()获取异常所在的行号。getTrace()获取异常追踪信息数组。getPrevious()返回前一个异常用于异常链Exception类绕过问题内置类-Reflection类相关问题(可以实现RCE)Reflection类函数反射Reflection是一套内置的元编程 API核心组件包括 ReflectionClass、ReflectionMethod 和 ReflectionParameter。它允许程序在运行时自我检查、动态获取结构信息并直接操作类、方法、属性及注释常用于现代框架的依赖注入容器。语法变量1new Reflection(类名/对象名)核心反射类ReflectionClass用于获取和操作类本身的信息如类名、父类、接口、属性、方法以及构造函数。ReflectionMethod用于检查类中某个特定方法的修饰符如public、private、参数和返回值。ReflectionParameter用于检查函数或方法中每个参数的类型、默认值以及是否可选。ReflectionFunction用于对全局独立函数进行反射检查。Reflection类绕过问题内置类-FilesystemIterator类相关问题(可以实现目录遍历)FilesystemIterator类相关函数FilesystemIterator 类是一个用于高效遍历文件系统目录的内置迭代器它继承自DirectoryIterator核心优势包括返回完整的路径作为键、支持通过标志位Flags过滤隐藏或特殊目录如.和..、以及直接产出SplFileInfo对象。语法变量1new Reflection(类名/对象名)继承关系扩展自DirectoryIterator行为更灵活。键与值默认以文件的完整路径作为键Key以SplFileInfo对象作为当前迭代值Value。常用标志FlagsFilesystemIterator::SKIP_DOTS自动跳过.和..目录。FilesystemIterator::CURRENT_AS_PATHNAME当前项仅返回路径字符串。FilesystemIterator::KEY_AS_FILENAME将文件名作为键。 [1]常用方法__construct(string $path, int $flags ?)构造函数传入目标目录路径及可选的控制标志。setFlags(int $flags)设置处理标志。getFlags()获取当前生效的标志。current()返回当前文件信息根据标志返回对象或路径。FilesystemIterator类相关函数遍历目录问题补遍历当前目录文件并显示文件内容payloadpayload:show_source(next(array_reverse(scandir(pos(localeconv())))));php解析特性GET参数解析问题-1利用phpGET参数解析特性来绕过参数传递失败问题GET参数解析图eval函数与assert函数eval函可以执行字符串php语句assert函数是一个用于开发和测试环境的调试工具核心作用是检查一个表达式是否成立支持表达式或字符串并在生产环境中可配置为零成本关闭。语法eval函数eval(php语句)assert函数assert(测试的表达式或对象, exception)可选参数$_SERVER[数组名]数组介绍$_SERVER[数组名]是一个包含传递给当前脚本参数的数组常用于命令行CLI模式和开启特定配置的网页Web模式。它的第一个元素$数组名[0]始终是脚本的文件名后续元素则是传参。GET参数解析问题-2通过$_SERVER[数组名]数组匹配请求方式传递进的参数再使用变量覆盖的方式覆盖绕过if语句执行后续语句